在闪亮

时间:2016-05-07 18:00:55

标签: r shiny

我对制作Shiny并不熟悉,但我想构建一个应用程序,我要求用户在文本框中输入一个数字,然后相应地显示下拉菜单。所有下拉菜单中的项目都是相同的。例如,我正在从csv文件中读取值

    Name  Designation   Gender
    Tom     CEO          M
    JIM     CSO          M
    RACHEL  SECRETARY    F
    ARYA    SECRETARY    M

如果我在我的文本框中输入12,我应该得到12个下拉,每个下拉有3个元素(不同的名称),即CEO,CSO和SECRETARY。我想进一步使用这12个选项,所以我想尽可能存储它们。如果这是可行的闪亮请发布server.R和ui.R代码。谢谢。

1 个答案:

答案 0 :(得分:2)

我将以下代码基于此answer。我认为它符合您的要求。只需将其保存为RS.udio中的app.R即可,您可以从顶部的工具栏启动它。找到在Shiny中学习动态UI元素的好地方here

library(shiny)

server <- function(input, output) {
  output$input_ui <- renderUI({
    num <- as.integer(input$num)

    lapply(1:num, function(i) {
      selectInput(paste0("n_input_", i), label = paste0("n_input", i),  
                  choices = list("CEO" = 1, "CSO" = 2, "SECRETARY" = 3), 
                  selected = 1)
    })
  })

  output$table <- renderTable({
    num <- as.integer(input$num)

    data.frame(lapply(1:num, function(i) {
      input[[paste0("n_input_", i)]]
    }))
  })

}

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      numericInput("num", label = h3("Numeric input"), value = 1)
    ),
    mainPanel(
      uiOutput("input_ui"),
      tableOutput("table")
    )
  )
)

shinyApp(ui = ui, server = server)

如下面的屏幕截图所示,输出目前的数字为:

"CEO" = 1
"CSO" = 2
"SECRETARY" = 3

Screenshot of Shiny App