如何使用shinydashboardPlus的轮播实现动态数量的幻灯片?

问题描述

我希望使用shinydashboardplus 的轮播图来显示多个图表。这些图表的数量每天从一张到十张不等。

一个 cron 作业每天运行 R 脚本。

这是一个固定数量幻灯片的工作示例,三张。

library(shiny)
library(shinydashboard)
library(shinydashboardplus)

chart_names <- c( "http://placehold.it/900x500/39CCCC/ffffff&text=Slide+1","http://placehold.it/900x500/39CCCC/ffffff&text=Slide+2","http://placehold.it/900x500/39CCCC/ffffff&text=Slide+3")


ui <- dashboardPagePlus(

  header = dashboardHeaderPlus(disable = TRUE ),sidebar = dashboardSidebar(width = 0 ),body = dashboardBody(
    carousel(indicators = TRUE,id = "mycarousel",carouselItem(
               tags$img(src = chart_names[1])
             ),carouselItem(
               tags$img(src = chart_names[2])
             ),carouselItem(
               tags$img(src = chart_names[3])
             )
    )
  )
)

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

shinyApp(ui,server)

这是可以使用 do.call 的示例吗?

根据名称函数以及要传递给它的参数列表构造并执行函数调用

这次尝试:

do.call(carousel,as.list(c(id = "mycarousel","carouselItem(tag$img(src = chart_names[1])")))

导致此错误

Error: $ operator is invalid for atomic vectors

如何以编程方式将以前未知数量幻灯片添加到 Shinydashboardplus 轮播中?

解决方法

答案在带有 .list 参数 ?carousel 的文档中

library(shiny)
library(shinydashboard)
library(shinydashboardPlus)

nb_items = 5

items = Map(function(i) {carouselItem(
  tags$img(src = paste0("http://placehold.it/900x500/39CCCC/ffffff&text=Slide+",i))
)},1:5)


ui <- dashboardPagePlus(
  
  header = dashboardHeaderPlus(disable = TRUE ),sidebar = dashboardSidebar(width = 0 ),body = dashboardBody(
    carousel(indicators = TRUE,id = "mycarousel",.list = items
    )
    
  )
)

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

shinyApp(ui,server)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...