在 R shiny 中的一个反应函数中显示多个信息框
Display multiple infoboxes within one reactive function in R shiny
我想知道是否可以像下面的脚本那样只用一个反应函数 "ibox" 创建多个信息框。我将在 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)
如评论中所述,您可以使用 renderUI
和 uiOutput
。但是,请注意 renderUI
实际上只呈现其主体中的最后一条语句。为了渲染多个对象,我们可以将它们放在一个列表中(或column
、fluidRow
等)。工作示例:
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)
我想知道是否可以像下面的脚本那样只用一个反应函数 "ibox" 创建多个信息框。我将在 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)
如评论中所述,您可以使用 renderUI
和 uiOutput
。但是,请注意 renderUI
实际上只呈现其主体中的最后一条语句。为了渲染多个对象,我们可以将它们放在一个列表中(或column
、fluidRow
等)。工作示例:
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)