如何仅使用列表名称创建 selectInput? (不显示列表内容)闪亮
How can I create a selectInput only with the names of a list? (without showing the content of the list) Shiny
我有 3 个向量:
colors = c("blue", "red", "green", "yellow", "white", "black")
numbers = c("1", "2", "3", "4")
things = c("phone", "fridge", "computer", "chair", "table", "notebook", "bag", "jacket")
为了将它们都放在一个列表中,我将它们加入了一个列表。
list_options = list("colors" = colors, "numbers" = numbers, "things" = things)
我的主要 objective 是创建一个闪亮的应用程序,它有一个仅包含列表名称(“颜色”、“数字”、“事物”)的 SelectInput。但是,如果您单击其中一个选项,您将能够获得列表的值以便稍后使用它们。
例如,如果您select“事物”,我想查看向量中的所有变量(phone、冰箱、计算机...)。
有办法吗?现在,使用我的代码,该应用程序会显示每个向量的名称及其选项,并为您提供 selected.
的选项
这就是我希望在应用程序中查看 select输入的方式。
但是,正如我所说,我想稍后使用每个向量的内容(为此,在我的示例中我编写了一个“renderText”)。如果您 select “颜色”,您将看到“蓝色、红色、绿色、黄色...”。
这是我的代码:
colors = c("blue", "red", "green", "yellow", "white", "black")
numbers = c("1", "2", "3", "4")
things = c("phone", "fridge", "computer", "chair", "table", "notebook", "bag", "jacket")
list_options = list("colors" = colors, "numbers" = numbers, "things" = things)
if (interactive()) {
shinyApp(
ui = fluidPage(
selectInput("option", "Options:", list_options),
textOutput("text")
),
server = function(input, output) {
output$text <- renderPrint({
input$option
})
}
)
}
非常感谢,
我不太清楚。是不是你想要的:
shinyApp(
ui = fluidPage(
selectInput("option", "Options:", names(list_options)),
textOutput("text")
),
server = function(input, output) {
output$text <- renderPrint({
list_options[[input$option]]
})
}
)
比 Stephane 的回答更复杂:使用 Observe() 和 updateSelectInput()
library(shiny)
values1 <- paste(c(1, 2, 3))
values_list <- list('1' = c(4, 5, 6), '2' = 7:9, '3' = 10:12)
ui <- fluidPage(
# Application title
titlePanel("Testing a dynamic dropdown"),
# Sidebar with a slider input for number of bins
sidebarLayout(
sidebarPanel(
selectInput("value",
"Choose value",
values1,
selected = '1', multiple = F),
selectInput("listed_values",
"Choose subvalue",
values_list['1'], # your default starting values
multiple = F)
),
mainPanel(
textOutput("text_result")
)
)
)
server <- function(input, output, session) {
observe({ # update 2nd dropdown based on first
updateSelectInput(session,
'listed_values',
choices = values_list[input$value],
selected = values_list[input$value][1])
})
output$text_result <- renderPrint({ # print selection
print(paste('You chose', input$listed_values))
})
}
shinyApp(ui = ui, server = server)
我有 3 个向量:
colors = c("blue", "red", "green", "yellow", "white", "black")
numbers = c("1", "2", "3", "4")
things = c("phone", "fridge", "computer", "chair", "table", "notebook", "bag", "jacket")
为了将它们都放在一个列表中,我将它们加入了一个列表。
list_options = list("colors" = colors, "numbers" = numbers, "things" = things)
我的主要 objective 是创建一个闪亮的应用程序,它有一个仅包含列表名称(“颜色”、“数字”、“事物”)的 SelectInput。但是,如果您单击其中一个选项,您将能够获得列表的值以便稍后使用它们。
例如,如果您select“事物”,我想查看向量中的所有变量(phone、冰箱、计算机...)。
有办法吗?现在,使用我的代码,该应用程序会显示每个向量的名称及其选项,并为您提供 selected.
的选项这就是我希望在应用程序中查看 select输入的方式。
但是,正如我所说,我想稍后使用每个向量的内容(为此,在我的示例中我编写了一个“renderText”)。如果您 select “颜色”,您将看到“蓝色、红色、绿色、黄色...”。
这是我的代码:
colors = c("blue", "red", "green", "yellow", "white", "black")
numbers = c("1", "2", "3", "4")
things = c("phone", "fridge", "computer", "chair", "table", "notebook", "bag", "jacket")
list_options = list("colors" = colors, "numbers" = numbers, "things" = things)
if (interactive()) {
shinyApp(
ui = fluidPage(
selectInput("option", "Options:", list_options),
textOutput("text")
),
server = function(input, output) {
output$text <- renderPrint({
input$option
})
}
)
}
非常感谢,
我不太清楚。是不是你想要的:
shinyApp(
ui = fluidPage(
selectInput("option", "Options:", names(list_options)),
textOutput("text")
),
server = function(input, output) {
output$text <- renderPrint({
list_options[[input$option]]
})
}
)
比 Stephane 的回答更复杂:使用 Observe() 和 updateSelectInput()
library(shiny)
values1 <- paste(c(1, 2, 3))
values_list <- list('1' = c(4, 5, 6), '2' = 7:9, '3' = 10:12)
ui <- fluidPage(
# Application title
titlePanel("Testing a dynamic dropdown"),
# Sidebar with a slider input for number of bins
sidebarLayout(
sidebarPanel(
selectInput("value",
"Choose value",
values1,
selected = '1', multiple = F),
selectInput("listed_values",
"Choose subvalue",
values_list['1'], # your default starting values
multiple = F)
),
mainPanel(
textOutput("text_result")
)
)
)
server <- function(input, output, session) {
observe({ # update 2nd dropdown based on first
updateSelectInput(session,
'listed_values',
choices = values_list[input$value],
selected = values_list[input$value][1])
})
output$text_result <- renderPrint({ # print selection
print(paste('You chose', input$listed_values))
})
}
shinyApp(ui = ui, server = server)