我想为列表中的每个数据框创建tabPanel
个元素.对于do.call
和map
函数,这似乎是可能的,但它会产生一个错误.
"[[中出错:try 在INTERGEROneIndex中 Select 少于一个元素"
我找到了这个似乎相关的问题,我试着把我所有的列表论点都放在alist()
中,但这也不起作用.
Shiny: use do.call to run render-family functions个
这里是一个最小的重述.
library(tidyverse)
library(shiny)
ui <- fluidPage(
uiOutput("tabs")
)
server <- function(input, output) {
dat <- lst(iris, mtcars)
if (FALSE) {
# this works, but would like to replicate with do.call and map
output$tabs <- renderUI(
tabsetPanel(
tabPanel("iris", renderDataTable(dat$iris)),
tabPanel("mtcars", renderDataTable(dat$mtcars)),
)
)
} else {
# doesn't work
output$tabs <- renderUI(
do.call(
tabsetPanel,
map2(names(dat), map(dat, renderDataTable), tabPanel)
)
)
}
}
shinyApp(ui = ui, server = server)