我正在尝试使用*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
向量的第一个元素,而是""
。你有什么建议吗?
答案 0 :(得分:0)
这可能是由于重复。因此,请尝试使用唯一值。
output$cyl <- renderUI({
cyl <- unique(data_filtered_by_mpg()$cyl)
selectInput("cyl", "Cyl", choices = cyl,
selected = cyl[1])
})