将绘图从 Shiny 模块中的渲染 UI 内部传递到主服务器

问题描述

我想了解如何将信息从模块传递到 Shiny App 的主服务器。这是对我的实际代码的过度简化,所以我知道它可以以不同的方式完成,但我需要主要使用 server.R 文件中的 callModule 来完成此操作。

# Mod1.R File
modUI <- function(id) {

ns <- NS(id)

  tagList(
    fluidRow(
      column(
        width = 12,numericInput(ns("num"),"Choose a number to plot",value = 3),uiOutput(ns("bins"))
      )
    )
  )
}

modServer <- function(input,output,session) {
  
  ns <- session$ns
  
  output$bins <- renderUI(
    ns <- session$ns,selectInput(ns("plot_type"),"select plot",c("hist","plot")),plotOutput(ns("plott"))
  )
  
  output$plott <- renderPlot(
    if (input$plot_type == "hist"){
      hist(input$num)
    } else (
      plot(input$num)
    )
  )

}

##############

# App.R File

library(shiny)
library(tidyverse)

# Modules
source("mod1.R")

    # Main App ----------------------------------------------------------------
    
    ui <- fluidPage(
      modUI("ssss")
    )  # Fluid Page
    
    
    server <- function(input,session) {
      callModule(modServer,"ssss")
    }
    
    
    shinyApp(ui,server)

我正在尝试将应在 Mod1.R 文件中生成的绘图返回到服务器函数中的 App.R 文件,但我不太确定如何执行此操作。我知道我应该在 Mod1.R 文件中返回一个响应式输出,例如:return(reactive(output$plott)),但这没有任何作用。你能指导我正确的方向吗?谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)