【问题标题】:Accessing a data frame loaded from read.csv from another function - R Shiny从另一个函数访问从 read.csv 加载的数据框 - R Shiny
【发布时间】:2016-06-30 01:18:15
【问题描述】:

我在将我从 csv 文件读取的矩阵中的数据传递到另一个函数时遇到问题。

我尝试了here的解决方案,创建了一个辅助数据函数并使用data()$loadedMat调用矩阵。

我来了

错误:“闭包”类型的对象不可子集

我有:

 shinyServer(function(input, output, session) {

   data <- reactive(function (){

       inFile <- input$file1

       if (is.null(inFile))
         return(NULL)

       loadedFile <- read.csv(inFile$datapath, 
                              header=FALSE, 
                              sep=input$sep, 
                              quote=input$quote)

       loadedDf <- loadedFile[2:nrow(loadedFile), ]

       #figure out how to access loadedMat from another function
       loadedMat <- as.matrix(loadedDf)


     })

     output$result <- renderText({

          input$goButton 
          x <- someFunction(data()$loadedMat)
     })
 })

【问题讨论】:

  • 重新定义data() 似乎是个坏主意;选择另一个名称,否则您的代码将变得非常难以阅读。

标签: r shiny shiny-server


【解决方案1】:

反应函数data() 不“包含”矩阵loadedMat,它是 loadedMat。

所以你可以像x &lt;- someFunction(data())一样访问它

您链接到的答案突出显示了您将如何访问 data.frame 中的列。

要访问data.frame 的列,您可以使用data$column。这同样适用于响应式数据帧:data()$column


重申@alistaire 的评论:您可能应该为您的数据选择一个不同于data 的名称(因为data() 已经是R 中的一个函数)

【讨论】:

    猜你喜欢
    • 2020-08-04
    • 2016-05-25
    • 1970-01-01
    • 1970-01-01
    • 2021-01-22
    • 1970-01-01
    • 2019-08-19
    • 2017-06-03
    • 1970-01-01
    相关资源
    最近更新 更多