使用renderUI未显示所选值

时间:2017-05-03 09:14:36

标签: r shiny

我正在尝试使用*Input()函数开发一个Shiny App,其输出取决于服务器中计算的某些结果。您可以在下面找到示例代码:

library(shiny)
library(shinydashboard)

ui <- dashboardPage(
  dashboardHeader(),
  dashboardSidebar(
    sliderInput("mpg", "Mpg", min(mtcars$mpg), max(mtcars$mpg), 
                c(min(mtcars$mpg), max(mtcars$mpg)), ticks = FALSE, step = 1),
    uiOutput("cyl")
  ),
  dashboardBody(
    tableOutput("out")
  )
)


server <- function(input, output) {

  data_filtered_by_mpg <- reactive({
    filter(mtcars, mpg >= min(input$mpg),
           mpg <= max(input$mpg))
  })

  output$cyl <- renderUI({
    selectInput("cyl", "Cyl", choices = data_filtered_by_mpg()$cyl, 
                selected = data_filtered_by_mpg()$cyl[1])
  })

  output$out <- renderTable(data_filtered_by_mpg())

}

shinyApp(ui, server)

这里的问题是选择列表的选定输入不是data_filtered_by_mpg()$cyl向量的第一个元素,而是""。你有什么建议吗?

1 个答案:

答案 0 :(得分:0)

这可能是由于重复。因此,请尝试使用唯一值。

  output$cyl <- renderUI({
    cyl <- unique(data_filtered_by_mpg()$cyl)
    selectInput("cyl", "Cyl", choices = cyl, 
                selected = cyl[1])
  })