[英]Can you add shinydashboardplus accordion items using lapply or a loop?
I'm trying to create an accordion in a shiny app using shinydashboardplus accordion function and, since it's very repetitive and all the info for the accordion comes from a datable, ideally I'd like to use a lapply function or for loop. 我不確定這是否可能。 到目前為止,這是我的代碼。
library("shiny")
library(shinydashboardPlus)
data(iris)
# UI ----
ui <- fluidPage(
# App title ----
titlePanel("Hello Shiny!"),
# Sidebar layout ----
sidebarLayout(
# Sidebar panel ----
sidebarPanel(
p("Some text")
),
# Main panel ----
mainPanel(
# Output: accordion ----
accordion(
id = "id-accordion",
#for (i in 1:3){
# accordionItem( #G11
# title = unique(ocup$nom2d[i]),
# tableOutput(paste0("table",i))
# )
#
#}
accordionItem( #G11
title = unique(iris$Species)[1],
tableOutput("table1")
), #G11 fin
accordionItem( #G12
title = unique(iris$Species)[2],
tableOutput("table2")
), #G12
accordionItem( #G13
title = unique(iris$Species)[3],
tableOutput("table3")
) #G13
)
)
)
)
server <- function(input, output) {
lapply(1:3, function(i){
outputId <- paste0("table", i)
output[[outputId]] <- renderTable({iris %>% filter(Species == unique(iris$Species)[i]) %>% select(Sepal.Length, Sepal.Width)})
})
}
shinyApp(ui, server)
我也考慮過使用 reactable 而不是手風琴,但我不能讓它看起來很好(請參閱問題Custom JS aggregation function reactable groups pull data from table )
預先感謝您的所有幫助。
您可以結合使用do.call
和lapply
以編程方式創建accordionItem
項:
library(shiny)
library(shinydashboardPlus)
data(iris)
ui <- fluidPage(
titlePanel("Hello Shiny!"),
sidebarLayout(
sidebarPanel(
p("Some text")
),
mainPanel(
do.call(accordion, c(list(id = "id-accordion"), lapply(seq_along(unique(iris$Species)), function(i){
accordionItem(
title = unique(iris$Species)[i],
tableOutput(paste0("table", i))
)
})))
)
)
)
server <- function(input, output) {
lapply(1:3, function(i){
outputId <- paste0("table", i)
output[[outputId]] <- renderTable({iris %>% filter(Species == unique(iris$Species)[i]) %>% select(Sepal.Length, Sepal.Width)})
})
}
shinyApp(ui, server)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.