提问人:JohnBones JohnBones 提问时间:11/22/2022 最后编辑:ismirsehregalJohnBones JohnBones 更新时间:11/22/2022 访问量:34
在 R/Shiny 中,为什么当我使用模块时不显示我的 ggplots?
In R/Shiny why my ggplots are not displayed when I am working with modules?
问:
这是我的应用代码:
library(shiny)
library(tidyverse)
source('module.R')
ui <- fluidPage(
tabpanel_UI("mod1")
)
server <- function(input, output, session) {
tabpanel_Server("mod1")
}
shinyApp(ui, server)
这是我的模块文件:'module.R'
tabpanel_function <- function(x,n){
tabPanel(paste0("Panel",x),
plotOutput(paste0("chart_",n))
)
}
tabpanel_UI <- function(id) {
ns <- NS(id)
tagList(
tabsetPanel(id = ns("x"),
tabPanel("Panela"),
tabPanel("Panelb"),
tabPanel("Panelc")
)
)
}
tabpanel_Server <- function(id) {
moduleServer(
id,
function(input, output, session) {
1:4 %>% map(~ tabpanel_function(.x, n = .x) %>% appendTab("x", .))
output$chart_1 <- renderPlot({
ggplot(mtcars, aes(cyl,mpg)) + geom_line(color ='red')
})
output$chart_2 <- renderPlot({
ggplot(mtcars, aes(cyl,mpg)) + geom_line(color ='green')
})
output$chart_3 <- renderPlot({
ggplot(mtcars, aes(cyl,mpg)) + geom_line(color ='blue')
})
output$chart_4 <- renderPlot({
ggplot(mtcars, aes(cyl,mpg)) + geom_line(color ='yellow')
})
}
)
}
我在这里错过了什么?
这是一个问题:在 R/Shiny 中,如何使用我创建的 purrr::map 创建其他面板,但不考虑模块。事实证明,我将需要使用模块,并且图表没有显示。有什么帮助吗?
答:
2赞
Stéphane Laurent
11/22/2022
#1
您必须使用命名空间
tabpanel_function <- function(id, x, n){
ns <- NS(id)
tabPanel(paste0("Panel", x),
plotOutput(ns(paste0("chart_", n)))
)
}
和:
1:4 %>% map(~ tabpanel_function(id, .x, n = .x) %>% appendTab("x", .))
1赞
thothal
11/22/2022
#2
您需要命名空间您的动态:plotOutputs
tabpanel_function <- function(x, n, ns){
tabPanel(paste0("Panel",x),
plotOutput(ns(paste0("chart_",n)))
)
}
## [....]
1:4 %>% map(~ tabpanel_function(.x, n = .x, session$ns) %>% appendTab("x", .))
评论
ns
plotOutput(NS(paste0("chart_",n)))
@StéphaneLaurent这样的?