R闪亮模块部署问题之间的通信
communication between R shiny modules deployment problem
我对 R 闪亮模块之间的通信有疑问。我使用 golem 包开发了一个包含两个模块的应用程序:数据和分析 https://xuemaozhang.shinyapps.io/reactivedata/
为了共享数据集,我在 app_server.R.
中使用了 reactiveValues, values = reactiveValues(data_imported=NULL)
将应用程序部署到shinyapps.io后,我发现它不允许多个用户:当一个用户更改数据时,其他用户也会看到相同的更新数据。我是闪亮应用程序开发的新手。问题如何解决?源代码可以从我的 github 站点看到:https://github.com/xuemaozhang/reactivedata
我更改了 mod_module1_data_server
、mod_module2_analysis_server
和 app_server
函数以便在会话中处理数据,无需在服务器外部创建 reactiveValues()
功能:
mod_module1_data_server <- function(id){
moduleServer( id, function(input, output, session){
# ns <- session$ns
Data <- reactive({
Data <- get(input$dataset)
Data
})
output$datatable<-renderDataTable({ Data() })
return(reactive(Data()))
})
}
mod_module2_analysis_server <- function(id, Data){
moduleServer( id, function(input, output, session){
ns <- session$ns
observe({
updateSelectizeInput(session, "numvar",
choices = names(Data()))
})
output$summary <- renderPrint({
summary(Data()[, input$numvar])
})
output$histogram<- renderPlot({
hist(Data()[, input$numvar])
})
})
}
这是你应该放在服务器上的内容:
server <- function( input, output, session ) {
Data <- mod_module1_data_server("module1_data_ui_1")
mod_module2_analysis_server("module2_analysis_ui_1", Data)
}
我对 R 闪亮模块之间的通信有疑问。我使用 golem 包开发了一个包含两个模块的应用程序:数据和分析 https://xuemaozhang.shinyapps.io/reactivedata/ 为了共享数据集,我在 app_server.R.
中使用了 reactiveValues, values = reactiveValues(data_imported=NULL)将应用程序部署到shinyapps.io后,我发现它不允许多个用户:当一个用户更改数据时,其他用户也会看到相同的更新数据。我是闪亮应用程序开发的新手。问题如何解决?源代码可以从我的 github 站点看到:https://github.com/xuemaozhang/reactivedata
我更改了 mod_module1_data_server
、mod_module2_analysis_server
和 app_server
函数以便在会话中处理数据,无需在服务器外部创建 reactiveValues()
功能:
mod_module1_data_server <- function(id){
moduleServer( id, function(input, output, session){
# ns <- session$ns
Data <- reactive({
Data <- get(input$dataset)
Data
})
output$datatable<-renderDataTable({ Data() })
return(reactive(Data()))
})
}
mod_module2_analysis_server <- function(id, Data){
moduleServer( id, function(input, output, session){
ns <- session$ns
observe({
updateSelectizeInput(session, "numvar",
choices = names(Data()))
})
output$summary <- renderPrint({
summary(Data()[, input$numvar])
})
output$histogram<- renderPlot({
hist(Data()[, input$numvar])
})
})
}
这是你应该放在服务器上的内容:
server <- function( input, output, session ) {
Data <- mod_module1_data_server("module1_data_ui_1")
mod_module2_analysis_server("module2_analysis_ui_1", Data)
}