在R闪亮的一个反应函数内显示多个信息框

时间:2018-03-22 09:40:36

标签: r shiny shinydashboard shinyapps

我想知道是否可以创建多个只有一个反应函数“ibox”的infoBox,如下面的脚本中所示。我将在ibox反应函数中传递下面所有信息框的值,并看到所有信息框一起显示。

library(shiny)
library(shinydashboard)
ui <- dashboardPage(
dashboardHeader(title = "Dynamic boxes"),
dashboardSidebar(),
dashboardBody(
  fluidRow(
  infoBoxOutput("ibox")
  )))
server <- function(input, output) {
output$ibox <- renderInfoBox({
  infoBox(
    "Title",
    5,
    icon = icon("credit-card")
  )
  infoBox(
    "Title",
    5,
    icon = icon("credit-card")
  )
  infoBox(
    "Title",
    4,
    icon = icon("credit-card")
  )

  })}
  shinyApp(ui, server)

1 个答案:

答案 0 :(得分:1)

如评论中所述,您可以使用renderUIuiOutput。但请注意,renderUI实际上只会在其正文中呈现最后一个语句。为了呈现多个对象,我们可以将它们放在列表中(或columnfluidRow等)。工作示例:

library(shiny)
library(shinydashboard)
ui <- dashboardPage(
  dashboardHeader(title = "Dynamic boxes"),
  dashboardSidebar(),
  dashboardBody(
    fluidRow(
      uiOutput("ibox")
    )))
server <- function(input, output) {
  output$ibox <- renderUI({
    list(
      infoBox(
        "Title",
        5,
        icon = icon("credit-card")
      ),
      infoBox(
        "Title",
        5,
        icon = icon("credit-card")
      ),
      infoBox(
        "Title",
        4,
        icon = icon("credit-card")
      )
    )
  })}
shinyApp(ui, server)