r - 在 R/Shiny 中如何使用 purrr::map 创建其他面板

标签 r shiny

这是我的代码。

为什么不工作?

我想我应该使用 do.call 但我不知道如何使用。 输出应该是前3个panel和后4个panel,一共7个Panel

有什么帮助吗?

library(shiny)
library(tidyverse)

tabpanel_function <- function(x){
  tabPanel(paste0("Panel",x))
}

ui <- fluidPage(
  
  tabsetPanel(
    tabPanel("Panela"),
    tabPanel("Panelb"),
    tabPanel("Panelc"),        
     
      1:4 %>% map(~ tabpanel_function(.x))
  )
)

server <- function(input, output, session) {
  
}

shinyApp(ui, server)

最佳答案

可以在服务器函数中调用 appendTab:

library(shiny)
library(tidyverse)

tabpanel_function <- function(x){
  tabPanel(paste0("Panel",x))
}

ui <- fluidPage(
  
  tabsetPanel(id = "x",
    tabPanel("Panela"),
    tabPanel("Panelb"),
    tabPanel("Panelc"),        
    
  )
)

server <- function(input, output, session) {
  1:4 %>% map(~ tabpanel_function(.x) %>% appendTab("x", .))
}

shinyApp(ui, server)

编辑

我删除了我之前的错误断言,即在 ui 构造中执行循环是行不通的。参见 here一种方法的完整演示(使用 lapply,其输出与 map 相同)。

关于r - 在 R/Shiny 中如何使用 purrr::map 创建其他面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74532454/

相关文章:

r - 如何使用 dplyr 获得两列的平均值?

r - R中如何按国家/地区格式化日期?

r - 在 Shiny App 中创建一个 KnobInput 小部件

html - 如何将 Shiny 的应用程序嵌入到 Rmarkdown html 文档中

r - 在 R 图中显示值

sql - 通过 R 在 SQL 查询中粘贴值

r - 创建一个新行,其中包含 1 - R 数据框中的列值之和

r - CF_STAGING_TIMEOUT 用于使用 Cloud Foundry 在 Bluemix 上部署 Shiny 应用程序

r - 通过电子邮件或其他安全方法发送/共享敏感的 R slidify 演示文稿

在 R Shiny 应用程序中重用输入