R有光泽:数据集没有传递给函数

时间:2017-05-16 19:55:38

标签: shiny reactive

这是我的服务器.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))

  })

}

2 个答案:

答案 0 :(得分:0)

将数据传递给函数,您必须在被动事件中返回数据。

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已经提到的,我不会将函数,输出和跟随变量命名为相同。

答案 1 :(得分:0)

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

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

感谢您的所有帮助!

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))
})