每个人:如何在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之间有什么区别。在这种情况下,它们会产生完全相同的结果。
非常感谢大家。
答案 0 :(得分:1)
我想我想出来了。 我设计了一个函数,并把它放在shinyserver之外:
pickedsinglefactor <- function(singlefactor,datatable){
#processing
}
在shinyserver中,我使用
s <- reactive(pickedsinglefactor(sfactor,datatable))
用于使用该功能。现在s是一个包含data.frame的被动对象。然后我可以用它