【发布时间】:2014-12-15 03:16:31
【问题描述】:
我编写了一个闪亮的小应用程序来测试用户上传数据的变量选择功能。这是我的代码:
ui.R
shinyUI(pageWithSidebar(
headerPanel("CSV Data explorer"),
sidebarPanel(
fileInput('datafile', 'Choose CSV file',
accept=c('text/csv', 'text/comma-separated-values,text/plain')),
htmlOutput("varselect", inline=TRUE),
selectInput("vars", "Select a variable:",choices=htmlOutput("varselect")),
br()
),
mainPanel(
dataTableOutput("table")
)
))
server.R
shinyServer(function(session,input, output) {
Dataset <- reactive({
infile <- input$datafile
if (is.null(infile)) {
return(NULL)
}
read.csv(infile$datapath)
})
observe({
output$varselect <- renderUI({
if (identical(Dataset(), '') || identical(Dataset(),data.frame())) return(NULL)
updateSelectInput(session, inputId="vars", label="Variables to use:",
choices=names(Dataset()), selected=names(Dataset()))
})
})
output$table <- renderDataTable({
if (is.null(input$vars) || length(input$vars)==0) return(NULL)
return(Dataset()[,input$vars,drop=FALSE])
})
})
如果您继续对任何 csv 文件进行测试,您将看到 2 个问题: 1. selectInput() 框上方的所有变量名显示混乱,这是由代码引起的:
htmlOutput("varselect", inline=TRUE)
但是如果我删除这行代码,我的 selectInput 就会消失。
- 如果我更改为 ,则 selectInput 只允许选择单个变量
selectInput("vars", "选择一个变量:",choices=htmlOutput("varselect"), multiple=TRUE),
并尝试点击多个选项,它不会反映在主面板的表格中。
我已经为这个问题苦苦挣扎了一段时间。有人可以帮忙吗!提前数以百万计的感谢!
问候, 介意
【问题讨论】:
-
所以澄清一下,您是否只是想让用户选择要在数据表中显示的变量(即列名)?你的目标是什么?
-
您好 cdeterman,感谢您的回复。是的,我尝试允许用户选择多个变量以显示在表格中(以及用于进一步分析,例如多元回归,这尚未反映在上述代码中)。
标签: file variables upload shiny interactive