我正在将我的应用程序部署到shinyapp中,当我打开多个窗口时,我注意到了一些奇怪的行为。我已经呈现了一个datatable,当我更新窗口上的筛选器时,我的表只更新了最后一个打开的窗口。
在阅读了作用域文档之后,我已经将我的反应性值移到了服务器函数中。
app.R
source("helpers/load_data.R")
server <- function(input, output, session) {
source("helpers/load_session_data.R")
output$risk_table <- renderDataTable({
DT::datatable(riskData$data
rownames = FALSE)
})
observeEvent(input$get_filtered_data, {
# UpdateTable function takes my table_csv and filters by the date, and updates the riskData reactive value
UpdateTable(table, input$date)
}
UpdateTable <- function(table, date) {
#... filter stuff
riskData$data <- filtered_table
}
}load_session_data.R
#table is a data.frame loaded globally outside of the ui and server functions.
riskData <- reactiveValues(data = table_csv) 我认为在服务器函数中加载我的反应性值意味着每个会话都有自己的反应性值?我希望能够在不同的会议上独立地过滤一张桌子。
发布于 2019-02-06 18:14:54
你需要做两件事
1)在源调用期间设置local=T
source("helpers/load_data.R", local=T)
source("helpers/load_session_data.R", local=T)“如果您使用的默认值是local = FALSE,那么该文件将来源于全局环境。”
2)将源调用置于服务器功能下,否则即使启用local=T,调用也将跨会话共享
server <- function(input, output, session) {
source("helpers/load_data.R", local=T)
source("helpers/load_session_data.R", local=
...
}在闪闪发亮的文档中是个很好的例子。(代码可以找到这里)
该文件中的对象在同一个R#进程源(‘all _sessions.R,local = TRUE)服务器<- function (输入、输出、会话){#对象在每个会话源(’each _session.R‘,local = TRUE)中定义的所有会话之间共享,输出$renderText <- (该文件中的{#对象每次调用该函数时定义该函数(’each _call.R‘,local = TRUE) #. })
https://stackoverflow.com/questions/54555460
复制相似问题