我开发了一个rshiny应用程序,它显示一个表格和一个图表作为给定城市的输出,作为用户的输入。现在我正在为用户提供输入多个城市的灵活性。 所以我现在要做的是以这样的方式显示输出,以便用户有一个选择列表,根据用户选择的值显示输出。
对于前用户现在输入3个城市3个表,并且在观察事件中计算了3个图,我希望用户根据输出将显示的城市进行选择。
示例代码类似于;
observeEvent(input$get, {
some operations...
output$city_output<- renderDataTable(samp_data)
}
)
我需要输出就像
selectInput('city','Select the city to be displayed',samp_data$city)
根据用户选择,应显示该城市的数据表
答案 0 :(得分:0)
使用renderUI
命令这样的事情怎么样?
library(shiny)
ui <- fluidPage(
# Application title
titlePanel("Test App"),
# Sidebar with a slider input for number of bins
sidebarLayout(
sidebarPanel(
checkboxGroupInput("City",label = "Choose a city",
choices = c("London","Paris","Hamburg"),
selected="London")
),
# Show a plot of the generated distribution
mainPanel(
uiOutput("ReactiveUI"),
textOutput("Final")
)
)
)
server <- function(input, output) {
output$ReactiveUI <- renderUI(
selectInput("ReactiveUI",
label="Choose one of your choices",
choices = input$City,
selected="London"))
output$Final <- renderText({paste("you selected",input$ReactiveUI)})
}
# Run the application
shinyApp(ui = ui, server = server)
这是有效的,因为通过使用renderUI
命令,我们可以像访问input$City
文件一样访问存储在server.r
中的值。
修改强>
详细说明renderUI
,此命令与uiOutput
配对(它是ui.R对应的,与renderText
一样是textOutput
)。 renderUI
命令将UI元素的构造从ui.R
移动到server.R
。这很有用,因为我们无法在ui.R
中进行太多“编程”,但我们可以在server.R
中进行。在input
中,我们也无法访问存储在ui.R
列表中的任何内容。简单地说,通过在server.R
中创建我们的UI元素,我们允许应用程序的UI响应其他用户输入。
在此示例中,我们通过将下拉选项设置为checkboxGroupInput