R / R Shiny - 全局数据帧数组(通过引用分配)?
R / R Shiny - global dataframes array (assigned by reference)?
我有一个数据帧 df1,并将其子集化为 df1sub 并在 R shiny renderPlot() 调用中显示它。同样,我有 df2,我将它子集化为 df2sub,并通过单独的 renderPlot() 调用在 R shiny 中渲染它。顺便说一句,这些子集是根据用户在 R Shiny 应用程序中的选择创建的。
现在,我有一个数据表,我想更改它以反映当前数据集是什么,所以我想要某种全局的,例如:
buffers[1] <- df1sub
buffers[2] <- df2sub
我将如何定义这个全局变量?我尝试单独执行 buffers = array() 来初始化一个全局变量,但是我在上面写的赋值不起作用?
Update:尝试按照下面的建议使用“<<-”运算符会产生以下结果:
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
然后在渲染图中:
output$blah <- renderplot(r1()...)
output$foo <- renderplot(r2()...)
将全局缓冲区[] var 单独留给第三个 UI 小部件(例如数据 table)...
我有一个数据帧 df1,并将其子集化为 df1sub 并在 R shiny renderPlot() 调用中显示它。同样,我有 df2,我将它子集化为 df2sub,并通过单独的 renderPlot() 调用在 R shiny 中渲染它。顺便说一句,这些子集是根据用户在 R Shiny 应用程序中的选择创建的。
现在,我有一个数据表,我想更改它以反映当前数据集是什么,所以我想要某种全局的,例如:
buffers[1] <- df1sub
buffers[2] <- df2sub
我将如何定义这个全局变量?我尝试单独执行 buffers = array() 来初始化一个全局变量,但是我在上面写的赋值不起作用?
Update:尝试按照下面的建议使用“<<-”运算符会产生以下结果:
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
然后在渲染图中:
output$blah <- renderplot(r1()...)
output$foo <- renderplot(r2()...)
将全局缓冲区[] var 单独留给第三个 UI 小部件(例如数据 table)...