【问题标题】:R shiny: Dataset not passed to a functionR闪亮:数据集未传递给函数
【发布时间】:2017-05-16 19:55:38
【问题描述】:

这是我的服务器。R.

  • 我使用响应式创建了 data()
  • 我使用我创建的 StructureAutomation 函数调用了 data()。但是,data()没有传递到 StructureAutomation。
  • 注意:StructureAutomation 函数在 functions.R 中定义。它需要一个数据集作为第一个输入参数。

server.R

source("./functions.R")

options(shiny.maxRequestSize=40*1024^2)


function(input, output) {

  data <- reactive({

    xdata <- input$inFile
    if (is.null(xdata))
      return(NULL)
    ydata = read.csv(xdata$datapath,header=input$header,sep=",")
    data = ydata[order(ydata[,1],ydata[,2]),]
    data


})


  output$structure <- renderTable({

    data=data()

    StructureAutomation(data,nlevels=input$level,buildout=FALSE)
    as.data.frame(count(node))

  })

}

【问题讨论】:

  • 你能提供一个reproducible example吗?
  • “未通过”是什么意思?它是否返回了一个空值?顺便说一句,我不会继续重用变量名data。这势必会导致令人困惑的名称冲突和错误。

标签: shiny reactive


【解决方案1】:

要将数据传递给函数,您必须在反应事件中返回数据。

source("./functions.R")

options(shiny.maxRequestSize=40*1024^2)


function(input, output) {

  data <- reactive({

    xdata <- input$inFile
    if (is.null(xdata))
      return(NULL)
    ydata = read.csv(xdata$datapath,header=input$header,sep=",")
    data = ydata[order(ydata[,1],ydata[,2]),]
    return(data)
})

  output$structure <- renderTable({

    data=data()

    StructureAutomation(data,nlevels=input$level,buildout=FALSE)
    as.data.frame(count(node))

  })

}

正如 Mike Wise 已经提到的,我不会将函数、输出和后续变量命名相同。

【讨论】:

    【解决方案2】:

    谢谢大家!这是一个愚蠢的错误。

    我应该将数据声明为全局变量。

    感谢您的所有帮助!

    runStructure <- eventReactive (input$runButton, {
        xdata = input$inFile
        if (is.null(xdata))
          return(NULL)
        ydata = read.csv(xdata$datapath,header=input$header,sep=",")
        data <<- ydata[order(ydata[,1],ydata[,2]),]   
    
        StructureAutomation(data,nlevels=input$level,buildout=FALSE)
        as.data.frame(count(node))
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-23
      • 1970-01-01
      相关资源
      最近更新 更多