闪亮 - 输入参数无法访问

时间:2018-03-19 06:00:06

标签: r shiny shinydashboard

我尝试从闪亮的滑块中获取输入,并通过调用其上的函数在服务器部分中使用它来获取图形信息。但是,来自滑块的输入无法在服务器端识别,并引发错误。

  

评估错误:参数"小时"缺少,没有默认值。

inputID与参数匹配,因此我不明白为什么它无法访问它。

library(shiny)
library(shinydashboard)
get_data <- function(foo){return(foo)}

#build shiny app
header <- dashboardHeader(
            title="Data"
          )
sidebar <- dashboardSidebar(
  sidebarMenu(
    menuItem("Charts and Analysis", tabName = "charts", icon = icon("bar-chart-o"), 
             menuSubItem("Temperature by Time of Day", tabName = "temperatures", icon = NULL)        )        
  )
)

body <- dashboardBody(
  tabItems(
    tabItem(tabName = "temperatures",
      fluidRow(
        box(
            title = "Time of Day",
            sliderInput(inputId = "hour", label="Hour (military)", min=0, max=23, value=12, step=1)
        ),
        box(plotOutput("series"))
      )
    )


  )


)


ui <- dashboardPage(skin="green", header, sidebar, body)
server <- function(input, output) { 

  MR <- get_data(strtoi(input$hour))
  output$series <- renderPlot({
    plot(x=MR, y=MR) 
   })
}

shinyApp(ui, server)

1 个答案:

答案 0 :(得分:0)

在闪亮的应用程序中,对输入参数的调用必须处于被动上下文中。 然后我们必须将功能分配移动到renderPlot函数。

library(shiny)
library(shinydashboard)
get_data <- function(foo){return(foo)}

#build shiny app
header <- dashboardHeader(
            title="Data"
          )
sidebar <- dashboardSidebar(
  sidebarMenu(
    menuItem("Charts and Analysis", tabName = "charts", icon = icon("bar-chart-o"), 
             menuSubItem("Temperature by Time of Day", tabName = "temperatures", icon = NULL)        )        
  )
)

body <- dashboardBody(
  tabItems(
    tabItem(tabName = "temperatures",
      fluidRow(
        box(
            title = "Time of Day",
            sliderInput(inputId = "hour", label="Hour (military)", min=0, max=23, value=12, step=1)
        ),
        box(plotOutput("series"))
      )
    )


  )


)


ui <- dashboardPage(skin="green", header, sidebar, body)
server <- function(input, output) { 


  output$series <- renderPlot({
    MR <- get_data(strtoi(input$hour))
    plot(x=MR, y=MR) 
   })
}

shinyApp(ui, server)