采购多个模块 R shiny

sourcing multiple modules R shiny

我有 5 个单独的文件,我试图在主 app.R 文件中获取它们,但是当我 运行 app.R 时,我收到此错误:

警告:input_ui 中的错误:找不到函数“input_ui”

input_ui 在 input_module.R 中定义,我来源 input_module.R 所以我不确定错误。

app.R

library(shiny)
library(shinydashboard)
library(shinydashboardPlus)
library(shinyWidgets)
library(shinyjs)
library(shinyBS)
library(shinycssloaders)

# Read modules
modules <- dir("modules", full.names = TRUE, recursive = TRUE)
lapply(modules, source)

source('server.R')
source('ui.R')

shinyApp(ui, server)

ui.R

ui <- input_ui("data")

server.R

server <- function(input, output, session){
  
  mydata <- callModule(data_module, "data")
  callModule(input_module, "input_module", mydata)
}

input_module.R

input_ui <- function(id) {
  ns <- NS(id)

  plotOutput(ns("plot"))
             
}

input_server <- function(input, output, session, mydata) {
  
  output$plot <- renderPlot(
    plot(mydata$data)
  )
    
}

data_module.R

data_module <- function(input, output, session) {
  vals <- reactiveValues()
  vals$data <- mtcars
  return(vals)
}

./modules/input_module.R

inputModuleUI <- function(id) {
    ns <- NS(id)
    plotOutput(ns("plot"))
}

inputModuleServer <- function(id, mydata) {
    moduleServer(
        id,
        function(input, output, session) {
            output$plot <- renderPlot(
              plot(mydata()$data)
            )
        }
    )
}

./modules/data_module.R

dataModuleUI <- function(id) {
    ns <- NS(id)
    NULL
}

dataModuleServer <- function(id) {
    moduleServer(
        id,
        function(input, output, session) {
            vals <- reactiveValues()
            vals$data <- mtcars
            return(vals)
        }
    )
}

./ui.R

ui <- inputModuleUI("input_module")

./server.R

server <- function(input, output, session){
    mydata <- dataModuleServer("data_module")
    inputModuleServer("input_module", reactive(mydata))
}

然后运行./app.R应该没问题。