在Shiny中创建模块:将来自module.R的checkboxInputs链接到app.R中的watchEvents

时间:2018-11-15 07:00:32

标签: shiny shinydashboard

我正在尝试在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

但是,如果可以更好地知道是否存在一种更正确/替代的方法。

谢谢。

0 个答案:

没有答案