我使用的是包含选项组的闪亮包的selectInput函数,如这个selectInput函数的输出
在ui.r文件中有这样的内容:
ListOfItemsWithNames = list(condition = c("KO","WT"),treatment = c("non","oui"))
selectInput("Select1_contrast",label="Compare",ListOfItemsWithNames)在server.R文件中,当我调用input$Select1_contrast时,我只得到所选的值(例如“oui”)。
是否有一种方法可以同时获得变量的名称和值(例如,"oui“和”热处理“)?
发布于 2017-06-30 16:27:18
这是另一种可能性。它使用键值对。根据selectInput的文档,这些对是允许的
选择要从中选择的值的列表。如果列表中的元素已命名,则会向用户显示该名称而不是该值。这也可以是一个命名列表,其元素是(命名的或未命名的)列表或向量。如果是这样的话,最外层的名称将被用作相应子列表中元素的"optgroup“标签。这允许您对类似的选择进行分组和标记。有关此功能的小演示,请参阅示例部分。
addKeys = function(nested_list){
keyed_nl = list()
for (a in names(nested_list))
for (b in (nested_list[[a]]))
keyed_nl[[a]][[b]] = paste0(a, "-", b)
keyed_nl
}
ListOfItemsWithNames = list(condition = c("KO", "WT"),
treatment = c("non", "oui"))
keyedList = addKeys(ListOfItemsWithNames)
library(shiny)
shinyApp(
fluidPage(
selectInput("choiceKey", "choose", keyedList),
textOutput('text')
),
function(input, output, session)
output$text = renderText(input$choiceKey)
)

如您所见,input$choiceKey将为您提供与-分离的类别和选择。使用strsplit,您可以分别获得两个部分
发布于 2017-06-27 15:42:00
这应该能行。在这个版本中,您有一个sencond下拉菜单,因此有第二个输入。
library(shiny)
ListOfItemsWithNames = list(condition = c("KO","WT"),treatment = c("non","oui"))
ui = inputPanel(
selectInput("category", "choose a category", names(ListOfItemsWithNames )),
selectInput("choice", "select a choice", ListOfItemsWithNames[[1]])
)
server = function(input, output, session){
observe({
updateSelectInput(session, "choice",
choices = ListOfItemsWithNames[[input$category]])
})
}
shinyApp(ui, server)https://stackoverflow.com/questions/44783931
复制相似问题