为用户提供以选择列表的形式查看输出的选项,即逐个查看输出

时间:2017-07-24 09:41:52

标签: r shiny

我开发了一个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)

根据用户选择,应显示该城市的数据表

1 个答案:

答案 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

选择的输入来利用查看其他输入的功能