我希望能够在我闪亮的应用程序的信息框中显示数据集每一列的摘要统计信息。我的应用程序允许用户上传自己的数据集,每列的标题均不同,因此我无法手动创建信息框-应该从上传的任何数据集创建信息框。到目前为止,我有以下代码:
library(shiny)
library(shinydashboard)
ui <- dashboardPage(
dashboardHeader(title = "Dynamic boxes"),
dashboardSidebar(),
dashboardBody(
fluidRow(
verbatimTextOutput("summaryBasicStats"),
uiOutput("ibox")
)))
server <- function(input, output) {
############ Basic Stats Events ############
# Return the requested dataset ----
datasetInputBasicStats <- reactive({
mtcars
})
# Generate a summary of the dataset ----
output$summaryBasicStats <- renderPrint({
dataset <- datasetInputBasicStats()
summary(dataset)
})
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)
答案 0 :(得分:2)
基本上,您需要在表摘要上使用lapply
生成infoBox列表。
这是一种方法:
library(shiny)
library(shinydashboard)
ui <- dashboardPage(
dashboardHeader(title = "Dynamic boxes"),
dashboardSidebar(),
dashboardBody(
fluidRow(
uiOutput("ibox")
)))
server <- function(input, output) {
############ Basic Stats Events ############
# Return the requested dataset ----
datasetInputBasicStats <- reactive({
mtcars
})
sumdiplay = reactive({
plouf <- summary(datasetInputBasicStats())
info <- lapply(colnames(plouf),function(coln){
infoBox(
coln,
paste0(plouf[,coln],collapse = "\n"),
icon = icon("credit-card"),
width = 6
)
})
return(info)
})
output$ibox <- renderUI({
sumdiplay()
})}
shinyApp(ui, server)
我使用lapply
中的列名列表在infoBoxe中使用该列名: