当多个= T时选择输入不更新= T

当多个= T时选择输入不更新= T

问题描述:

我开发了一个小的闪亮的应用程序,但我希望它显示两个数据集的变量,当我将它们与multiple =T一起选择。有任何想法吗?当多个= T时选择输入不更新= T

ui.r

server.r

function(input, output, session){ 

    # updates variable names based on selected dataset 
    outVar = reactive({ 
    names(get(input$dataset)) 
    }) 

    # create separate observeEvents to 
    observeEvent(input$dataset, { 
    updateSelectInput(session, "columns", choices = outVar()) 
    }) 
} 
+0

请查看【答案】(https://*.com/a/46031333/4836511)和更新相应的问题,如果它不回答你的问题。 – Prradep

您需要通过选择的输入作为一个列表到lapply功能和input$dataset读取数据集迭代用于获取names()

你可以尝试以下方法:

# updates variable names based on selected dataset 
    outVar = reactive({ 
    unlist(lapply(as.list(input$dataset), function(x){data <- get(x);names(data)})) 
    }) 

完整的工作例如:

library(shiny) 

ui <- bootstrapPage(
    selectInput('dataset', 'Choose data set', c('mtcars', 'iris'),multiple = T), 
    selectInput('columns', 'Choose variable', "") 
) 

server <- function(input, output, session){ 

    # updates variable names based on selected dataset 
    outVar = reactive({ 
    unlist(lapply(as.list(input$dataset), function(x){data <- get(x);names(data)})) 
    }) 

    # create separate observeEvents to 
    observeEvent(input$dataset, { 
    updateSelectInput(session, "columns", choices = outVar()) 
    }) 
} 


shinyApp(ui, server)