如何访问闪亮应用程序中上传的数据框中的列?

时间:2016-09-25 16:20:11

标签: file-io shiny

我正在尝试创建一个闪亮的应用程序。此应用使用用户上传的.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),但没有一个工作。如何访问刚刚上传的数据?

提前致谢,

最佳,

2 个答案:

答案 0 :(得分:0)

您可以使用data_OBS()$CL访问它,但只能在observeobserveEventeventReactive等反应性上下文中访问。

以下是使用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应该有效。