【问题标题】:How to access to columns in data frame uploaded in shiny app?如何访问闪亮应用程序中上传的数据框中的列?
【发布时间】:2017-02-02 23:39:22
【问题描述】:

我正在尝试创建一个闪亮的应用程序。此应用使用用户上传的 .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),但它们都没有奏效。怎样才能访问刚刚上传的数据?

提前致谢,

最好的,

【问题讨论】:

    标签: file-io shiny


    【解决方案1】:

    首先检查它没有返回null。此外,您可以强制 return(read.csv(...)) data_OBS()$CL 应该可以工作。

    【讨论】:

      【解决方案2】:

      您可以使用 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)
      

      【讨论】:

        猜你喜欢
        • 2019-04-09
        • 1970-01-01
        • 1970-01-01
        • 2016-02-10
        • 2020-04-22
        • 2015-06-27
        • 1970-01-01
        • 2021-02-22
        • 1970-01-01
        相关资源
        最近更新 更多