我正在使用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是加载文件中的数据。
答案 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]
})
}
))