モジュールから Shiny アプリのメイン サーバーに情報を渡す方法を理解しようとしています。これは私の実際のコードを単純化しすぎているため、別の方法で実行できることは理解していますが、主にcallModule
server.R ファイルでこれを行う必要があります。
# 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, output, session) {
callModule(modServer, "ssss")
}
shinyApp(ui, server)
Mod1.R ファイル内で生成されるはずのプロットをサーバー関数の App.R ファイルに戻そうとしていますが、これを行う方法がよくわかりません。Mod1.R ファイルで次のようなリアクティブ出力を返す必要があることはわかってreturn(reactive(output$plott))
いますが、これは何もしません。正しい方向に私を導くことができますか?ありがとう。