R/R Shiny - 全局数据框数组(由参考分配)?
问题描述:
我有一个数据帧df1,并将其子集到df1sub并显示它在一个R闪亮renderPlot()调用。同样,我有df2,并将它分配给df2sub,并通过单独的renderPlot()调用将其呈现在R光泽中。 Btw这些子集是基于R Shiny应用程序中的用户选择创建的。R/R Shiny - 全局数据框数组(由参考分配)?
现在,我有我想改变,以反映无论当前的数据是一个DataTable,所以我想某种全球性,如:
buffers[1] <- df1sub
buffers[2] <- df2sub
我怎么会去定义这个全局变量?我尝试单独做buffer = array()来初始化一个全局变量,但是随后我写上面的赋值不起作用?
更新:尝试使用了 '< < -' 如下建议运营商可以得到以下:
buffers <- NULL #don't know how else to initialize. array() yields same error as below.
buffers[1] <<- df # Error in buffers[1] <<- df : object 'buffers' not found
答
可以采用这种方式:
library(shiny)
shinyServer(function(input, output) {
...
some.reactive.expression <- reactive1({
...
buffers[1] <<- df1sub
buffers[2] <<- df2sub
...
})
})
随着一些更新:
#In global.R
buffers <- list()
buffers[[1]] <- data.frame()
buffers[[2]] <- data.frame()
buffers[[1]] <- df1 #original dataset, as a default, before subsets are created
buffers[[2]] <- df2 #ditto.
然后在server.R:
r1 <- reactive({
... #create subset of df, then return it
buffers[[1]] <<- subset(...)
buffers[[1]] #return it as dynamic data for plots
})
r2 <- reactive({...}) #ditto
然后在renderplot:
output$blah <- renderplot(r1()...)
output$foo <- renderplot(r2()...)
离开[]变种分别提供给第三UI插件的全局缓冲液(例如一个数据表)...
如果数据变化也应该在其他反应函数中可用,你可能想看看'reactiveValues' [here](http://shiny.rstudio.com/reference/shiny/ latest/reactiveValues.html) – Vincent 2015-01-26 23:35:28
http://stackoverflow.com/questions/15327506/r-shiny-how-to-save-input-data-to-the-server-or-access-input-variables-globally ? – MHH 2015-01-27 01:40:41