2017-05-16 42 views
0

這是我的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://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)? – jsb

+0

「不合格」是什麼意思?它是否返回null?順便說一句,我不會重複使用變量名稱「數據」。這必然會導致名稱衝突和錯誤的混淆。 –

回答

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

    }) 

} 

而正如邁克懷斯已經提到的,我不會命名該函數,輸出和跟隨變量相同。

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