我正在尝试创建一个闪亮的应用程序。此应用使用用户上传的.csv文件。我真的不明白fileInput()在存储数据框架方面是如何工作的。
我正在使用此代码上传文件:
data_OBS = reactive({ inFile <- input$file1 if (is.null(inFile)) return(NULL) read.csv(inFile$datapath, header=T, sep=",") })
如果我理解的话,数据框应该可以在data_OBS()中访问。如果我要上传的.csv文件在普通R环境中有一个名为“CL”的列,我应该能够使用data_OBS $ CL进行访问。但是,在闪亮的data_OBS()中是一个函数。我已经尝试了data_OBS $ CL,data_OBS()$ CL,data_OBS(CL),但没有一个工作。如何访问刚刚上传的数据?
提前致谢,
最佳,
答案 0 :(得分:0)
您可以使用data_OBS()$CL
访问它,但只能在observe
,observeEvent
,eventReactive
等反应性上下文中访问。
以下是使用observeEvent
的最小示例:
ui <- fluidPage(
fileInput("file1", "Choose CSV File"),
textOutput("text"),
actionButton("print", "Print to text output")
)
server <- function(input, output, session){
data_OBS = reactive({
inFile <- input$file1
if (is.null(inFile))
return(NULL)
read.csv(inFile$datapath, header=T, sep=",")
})
observeEvent(input$print, {
req(input$file1) # Doesn't do anything until a file is uploaded
output$text <- renderText(data_OBS()$CL)
})
}
shinyApp(ui, server)
答案 1 :(得分:-1)
首先检查它没有返回null。另外,你可以强制返回(read.csv(...)) data_OBS()$ CL应该有效。