R有光泽的select变量基于checkboxGroupInput

时间:2014-03-25 21:06:43

标签: r shiny

我正在使用R shiny来开发交互式分析工具。现在我想根据变量checkGroupInput做分类树。如何选择该数据子集? THX!

UI:

       dateInput("date","Enter date:",value = date),
       checkboxGroupInput("variable", "Variable:",
                         choices = names ,selected = names
        )

服务器我试过,但不起作用:

 dataall <-  reactive({
     filename <- paste0("dataall_'", input$date, "'.RData")
     load(filename)
     feature.test[,names(feature.test) %in% input$variable]
   })

feature.test是加载文件中的数据。

3 个答案:

答案 0 :(得分:5)

很难理解您的需求,因为您没有对加载的文件进行子集化。什么是feature.test

这是一个简单的例子,介绍如何使用输入和闪亮的反应来对数据框进行子集化:

shiny::runApp(list(
  ui = basicPage(
    selectInput("specy", "Specy", choices = levels(iris$Species)),
    tableOutput("content")
  ),
  server = function(input, output, session) {
    output$content <- renderTable({
      iris[iris$Species == input$specy, ]
    })
  }
))

编辑##: 按列子集:

shiny::runApp(list(
  ui = pageWithSidebar(
    headerPanel("Example"),
    sidebarPanel(
      checkboxGroupInput("variable", "Variable:", choices = names(iris))
    ),
    mainPanel(
     tableOutput("content")
    )
  ),
  server = function(input, output, session) {
    output$content <- renderTable({
      if(is.null(input$variable))
        return()

      iris[input$variable]
    })
  }
))

答案 1 :(得分:1)

"variable"应该是"date",因为这是您在UI部分中引用的控件,如:

checkboxGroupInput( "date", "Variable:",
                 choices = names ,selected = names
)

答案 2 :(得分:0)

对于data.table,您需要添加一个,with=FALSE或在服务器代码中使用一个临时变量:

# Load libraries
library(shiny)
library(data.table)

# Copy dataset
irisDT=copy(iris)
setDT(irisDT)

# Shiny app
shiny::runApp(list(
    # UI
    ui = pageWithSidebar(
        headerPanel("Example"),
        sidebarPanel(
            checkboxGroupInput("variable", "Variable:", choices = names(iris))
        ),
        mainPanel(
            tableOutput("content")
        )
    ),

    # Server
    server = function(input, output, session) {
        output$content <- renderTable({
            if(is.null(input$variable))
                return()

            # iris[input$variable]               # data.frame
            irisDT[, input$variable, with=FALSE] # data.table
            # Alternatively:
            # tmp <- input$variable
            # irisDT[, ..tmp]
        })
    }
))