我有几个模块,其中一个模块的目标是收集所有meta
表达式,并将它们放入单个verbatimTextOutput
中。在阅读了这篇关于模块之间通信的文章后,我试图用shinymeta
表达式来调整它,但我在这样做时遇到了一些困难
这里有一个例子:
library(shiny)
library(shinymeta)
small_mod_ui <- function(id){
ns <- NS(id)
selectInput(ns("test"), "test", choices = names(mtcars))
}
small_mod_server <- function(input, output, session){
return(
list(
test_reactive = metaReactive({
..(input$test)
}),
test_reactive_2 = metaReactive({
..(input$test)
})
)
)
}
code_mod_ui <- function(id){
ns <- NS(id)
verbatimTextOutput(ns("show_code"))
}
code_mod_server <- function(input, output, session, com_between_mods){
output$show_code <- renderPrint({
expandChain(
com_between_mods$test_reactive(),
com_between_mods$test_reactive_2()
)
})
}
ui <- fluidPage(
small_mod_ui("1"),
code_mod_ui("1")
)
server <- function(input, output, session) {
com_between_mods <- callModule(small_mod_server, "1")
callModule(code_mod_server, "1", com_between_mods = com_between_mods)
}
shinyApp(ui, server)
运行此示例会引发以下错误:
警告:中的错误::2:2:意外输入1:
1_test_reactive
<-"mpg"2:1_^134:
但是,替换
return(
list(
test_reactive = metaReactive({
..(input$test)
}),
test_reactive_2 = metaReactive({
..(input$test)
})
)
)
通过
return(list(test_reactive = metaReactive({ ..(input$test) }), test_reactive_2 = metaReactive({ ..(input$test) }) ))
(在一行(似乎解决了这个问题。
shinymeta
中是否存在"缩进条件"?
在RStudio社区上也被问及
Joe Cheng在GitHub 上解决的问题