【发布时间】:2018-05-20 15:48:16
【问题描述】:
如何使用需要一些动态输入的代码在 shinydashboard 中使用 tabItem 元素填充 tabItems?
我正在做的示例如下。单击按钮时,该代码将起作用并生成额外的选项卡。 TODO 行解释了我遇到的困难。我想通过代码为每个选项卡添加 tabItem,而不是明确放置 tab0、tab1 等。
ui.R
library(shiny)
library(shinydashboard)
dashboardPage(
dashboardHeader(title = "EXAMPLE MULTI TABS"),
dashboardSidebar(
sidebarMenuOutput("menu"),
actionButton("add", label = "Add tab")),
dashboardBody(uiOutput("body1"))
)
服务器.R
library(shiny)
library(shinydashboard)
# example server
function(input, output) {
output$menu <- renderMenu(
sidebarMenu(
# adding sub items if action button pressed
do.call(menuItem, c(text = "Example tabs", tabName = "settings", startExpanded = T,
lapply(0:input$add, function(i) {
menuSubItem(text = paste0("sub menu ", i), tabName=paste0("tab",i))
}
)))
))
# body for different tabs
output$body1 <- renderUI({
tabItems(
#TODO: add tabs content based on number of tabs that is defined by action button value
tabItem(tabName = "tab0",
uiOutput("tab0")),
tabItem(tabName = "tab1",
uiOutput("tab1"))
)
})
# add tab content for each tab
observe({
for (i in 0:input$add) {
local({
my_i <- i
tabname <- paste0("tab",my_i)
output[[tabname]] <- renderUI({
box(
renderText(paste0("tab",my_i))
)
})
})
}
})
}
【问题讨论】:
-
This 应该有帮助!
标签: r shiny shinydashboard