【问题标题】:R Shiny selecting multiple variables with one checkboxR Shiny 用一个复选框选择多个变量
【发布时间】:2019-09-22 12:43:17
【问题描述】:

对闪亮来说是全新的,我只是想了解它的疯狂潜力。

为了提供一些背景知识,我正在尝试为显示研究数据的闪亮应用开发交互式数据表。但是,我的数据集有 1000 多个变量,显然不能全部显示用于复选框选择。为了解决这个问题,我开发了变量组。

不幸的是,我似乎无法用一个复选框选择多个变量,然后将所有这些变量(在所选变量组内)显示在数据表中。这甚至可能吗?下面的代码显然不起作用,但这只是为了让我了解我正在尝试做什么。如果有人能指出我正确的方向,我将不胜感激。

干杯

ui <- fluidPage(
checkboxGroupInput("variable", "Variables to show:",
                 c("Cy_Trans_Gear" = c("cyl", "am", "gear"),
                   "Transmission" = "am",
                   "Gears" = "gear")),
tableOutput("data")
)

server <- function(input, output, session) {
output$data <- renderTable({
mtcars[, c("mpg", input$variable), drop = FALSE]
}, rownames = TRUE)
}

shinyApp(ui, server)

【问题讨论】:

标签: r shiny


【解决方案1】:

解决此问题的一种方法是创建一个函数,该函数从输入中获取值并吐出所需的列(有点像查找表)。一旦你有了这个,你可以在显示表格之前过滤掉里面需要的列和renderTable({)}

ui <- fluidPage(
checkboxGroupInput("variable", "Variables to show:",
                 c("Cy_Trans_Gear" = c("cyl", "am", "gear"),
                   "Transmission" = "am",
                   "Gears" = "gear")),
tableOutput("data")
)

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


# Use an ifelse/switch statement
# to return a list of list names
# based on input.

lookupTable <- function(ip) {

        if (ip == "something") {
            return (c("col1", "col2", "col3"))
        } else if () {
            ...
        }        
}

output$data <- renderTable({
selected_column_list <- lookupTable(input$variable)
mtcars %>%
    select(selected_column_list)
}, rownames = TRUE)
}

shinyApp(ui, server)

您也可以使用 base R 而不是 dplyr 来返回表。我还没有测试上面的代码,所以,它可能存在语法问题,但想法仍然存在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多