Я пытаюсь создать модуль, содержащий menuItems и checkboxInputs в скрипте module.R, и связать эти входы с наблюдаемыми событиями в приложении. R
Буду благодарен за любые предложения, поскольку после широкого поискав Интернете я получаю следующую ошибку:
ОШИБКА: невозможно принудительно привести тип 'замыкание' к вектору типа 'символ'
Это мой файл 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"),
)
)
После дальнейших исследований я обнаружил, что работает следующий код:
In 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})
}
In 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
Однако, если было бы полезно узнать, существует ли более правильный / альтернативный метод.
Спасибо.