R闪亮:数据集未传递到函数

R闪亮:数据集未传递到函数

问题描述:

这是我的server.R。R闪亮:数据集未传递到函数

  • 我创建的数据()使用反应
  • 我称为数据(),使用我创建StructureAutomation的功能。但是,传递给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)) 

    }) 

} 
+0

你能否提供一个[可重现的例子](http://*.com/questions/5963269/how-to-make-a-great-r-reproducible-example)? – jsb

+0

“不合格”是什么意思?它是否返回null?顺便说一句,我不会重复使用变量名称“数据”。这必然会导致名称冲突和错误的混淆。 –

将数据传递到你必须在你的反应事件中返回的数据的功能。

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

    }) 

} 

而正如迈克怀斯已经提到的,我不会命名该函数,输出和跟随变量相同。

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

我应该宣布数据为全局变量。

感谢您的帮助!

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