采购多个模块 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
应该没问题。
我有 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
应该没问题。