我正在尝试在module.R脚本中创建一个包含menuItems和checkboxInputs的模块,并将这些输入链接到app.R中的watchEvents
对于任何建议,我将不胜感激,因为在网上广泛搜索后,出现以下错误:
错误:无法将类型'closure'强制转换为类型为'character'的向量
这是我的module.R文件:
library(modules)
library(shiny)
library(shinydashboard)
dashboardSidebarUI2 <- function(id) {
ns <- NS(id)
tagList(
checkboxInput(inputId = ns("pow_id"), label = "Power plants (all)", value = FALSE)
)
setup<-function(input,output,session,sel){
sel<-reactive({input$pow_id})
return(sel)
}
}
app.R中的相关部分:
library(modules)
library(shiny)
library(shinydashboard)
source("module.R"),
dashboardSidebar(
width = 310,
sidebarMenu(
dashboardSidebarUI2("sel"),
)
)
经过进一步研究,我发现以下代码有效:
在module.R中:
dashboardSidebarUI2 <- function(id) {
ns <- NS(id)
tagList(
checkboxInput(inputId = ns("pow_id"), label = "Power plants (all)", value = FALSE)
)
}
setup<-function(input,output,session){
reactive({input$pow_id})
}
在app.R中:
source("module.R"),
dashboardSidebar(
width = 310,
sidebarMenu(
dashboardSidebarUI2("basic"),
)
)
server <- function(input, output, session) {
pow_id <- callModule(setup,"basic")
observeEvent(pow_id(), {
ib <- pow_id()
花了一段时间才能解决这个问题。我发现这些资源特别有用: https://itsalocke.com/blog/shiny-module-design-patterns-pass-module-inputs-to-other-modules/ https://github.com/rstudio/webinars/blob/master/19-Understanding-modules/01-Modules-Webinar.pdf
但是,如果可以更好地知道是否存在一种更正确/替代的方法。
谢谢。