我对制作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代码。谢谢。
答案 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