闪亮的允许用户选择要显示的列

shiny allowling users to choose which columns to display

我正在尝试 shiny 中的数据表功能,我有兴趣创建一个列出数据表所有列并允许用户选择他们希望在数据表上看到的列的 wellpanel 或侧面板。

现在下面这段代码显示玩具数据集的所有列mtcars

library(shiny)

runApp(list(
  ui = basicPage(
    h2('The mtcars data'),
    dataTableOutput('mytable')
  ),
  server = function(input, output) {
    output$mytable = renderDataTable({
      mtcars
    })
  }
))

我有兴趣让用户能够使用复选框打开或关闭这些列

  [1] "mpg"  "cyl"  "disp" "hp"   "drat"
  [6] "wt"   "qsec" "vs"   "am"   "gear"
  [11] "carb"

非常感谢有关解决此问题的任何帮助。提前致谢。

这是一个例子。它使用 selectInput 到 select 列,并默认显示所有列,直到您 select 一个或多个特定列。

library(shiny)
runApp(list(
  ui = basicPage(
    selectInput("select", "Select columns to display", names(mtcars), multiple = TRUE),
    h2('The mtcars data'),
    dataTableOutput('mytable')
  ),
  server = function(input, output) {
    output$mytable = renderDataTable({
      columns = names(mtcars)
      if (!is.null(input$select)) {
        columns = input$select
      }
      mtcars[,columns,drop=FALSE]
    })
  }
))

我的示例使用 checkboxGroupInput 到 select 多列

library(shiny)

vchoices <- 1:ncol(mtcars)
names(vchoices) <- names(mtcars)

runApp(list(
  ui = basicPage(
    h2('The mtcars data'),
    checkboxGroupInput("columns","Select Columns",choices=vchoices,inline = T),
    dataTableOutput('mytable')


  ),
  server = function(input, output) {

    observeEvent(input$columns,{
      cols <- as.numeric(input$columns)
      if(length(input$columns) == 1){
        df <- data.frame(mtcars[,cols])
        names(df) <- names(mtcars)[cols]
        output$mytable = renderDataTable(df)

      }else{
        output$mytable = renderDataTable(mtcars[,cols])

      }


    })

  }
))