Ниже я отображаю 2 попытки. У меня есть блестящая приборная панель с tabPanels. Я хотел бы создать tabPanels tabPanel Data
автоматически на основе кадра данных Uni
. В моей первой попытке ниже эти tabPanels закомментированы, чтобы прояснить, что я имею в виду.
Uni<-data.frame(NAME=c("A","B","C"))
# app.R ##
library(shiny)
library(shinydashboard)
library(shinydashboardPlus)
library(shinyjs)
dbHeader <- dashboardHeaderPlus(
title = "Tabs"
)
ui <- dashboardPagePlus(
dbHeader,
dashboardSidebar(),
dashboardBody(
useShinyjs(),
tags$hr(),
tabsetPanel(
id ="tabA",
type = "tabs",
tabPanel("Front",icon = icon("accusoft")),
tabPanel("Data", icon = icon("table"),
tabsetPanel(
id ="tabA",
type = "tabs",
for(i in 1:nrow(Uni)){
tabPanel(
paste0(Uni[i,1])
,icon = icon("table"))
}
#tabPanel("A",icon = icon("table")),
#tabPanel("B", icon = icon("table")),
#tabPanel("C", icon = icon("table"))
)
)
)
)
)
server <- function(input, output) {
}
shinyApp(ui = ui, server = server)
и моя вторая попытка:
# app.R ##
library(shiny)
library(shinydashboard)
library(shinydashboardPlus)
library(shinyjs)
dbHeader <- dashboardHeaderPlus(
title = "Tabs"
)
ui <- dashboardPagePlus(
dbHeader,
dashboardSidebar(),
dashboardBody(
useShinyjs(),
tags$hr(),
tabsetPanel(
id ="tabA",
type = "tabs",
tabPanel("Front",icon = icon("accusoft")),
tabPanel("Data", icon = icon("table"),
tags$hr(),
tabsetPanel(
id ="tabA",
type = "tabs",
uiOutput("panels")
#tabPanel("A",icon = icon("table")),
#tabPanel("B", icon = icon("table")),
#tabPanel("C", icon = icon("table"))
)
)
)
)
)
server <- function(input, output) {
output$panels <- renderUI({
pan = lapply(1:length(Uni), function(i)
tabPanel(Uni[i,1],icon = icon("table")))
do.call(tabBox,pan)
})
}
shinyApp(ui = ui, server = server)