如何在server.R中使用R,有光泽?

时间:2015-12-25 05:44:11

标签: r shiny plyr

每个人:如何在server.R中设计一个功能并使用它?另一个问题是:如何从反应对象中获取值? 例如,这是我的代码:

  datatable <- reactive({
    inFile <- input$file1
     if (is.null(inFile))
    return(NULL)
  read.csv(inFile$datapath, header=input$header, sep=input$sep, quote=input$quote)
  })

因此,在这里,datatable是一个存储来自.csv文件的data.frame的反应对象。当我喜欢datatable()时,它可以像data.frame一样使用。但是如何从中获取data.frame?我尝试了数据&lt; - datatable(),它没有用。

另一个问题是关于我的代码:

  output$singletable <- renderDataTable({
    a <- subset(datatable(),!is.na(datatable()$actualfailureyear))
    b <- count(a,c(input$sfactor))
    c1 <- datatable()[!duplicated(datatable()$AssetID),]
    c <- ddply(.data = c1,.variables = input$sfactor,function(x){sum(x$length)})
    d <- merge(b,c,by=input$sfactor)
    e <- ddply(.data = d,.variables = input$sfactor,function(x){data.frame(failcount=x$freq,length=x$V1,failrate=x$freq/(x$V1*0.00001)/21)})
  })

我会一直使用代码a-e,所以我真的需要把它们放到一个函数中,并且可以在任何我想要的地方使用它。你能告诉我如何用更多的细节来做这件事吗?

我不明白的另一件事是关于c和e的两行。当我喜欢c&lt; - aggregate(length~input $ sfactor,c1,sum)时,它变成了一个错误。当我使用transform()为e时,同样的事情发生了。但现在它运作良好。所以我的问题是:ddply和aggregate / transform之间有什么区别。在这种情况下,它们会产生完全相同的结果。

非常感谢大家。

1 个答案:

答案 0 :(得分:1)

我想我想出来了。 我设计了一个函数,并把它放在shinyserver之外:

pickedsinglefactor <- function(singlefactor,datatable){
    #processing
 }

在shinyserver中,我使用

s <- reactive(pickedsinglefactor(sfactor,datatable))

用于使用该功能。现在s是一个包含data.frame的被动对象。然后我可以用它