RShiny - 从列表中渲染InfoBox

时间:2018-05-17 22:44:26

标签: r shinydashboard

在R中,我熟悉renderMenu选项,可以将数据框中的行列表呈现为下拉菜单:

服务器端:

output$task_menu <- renderMenu({
        tasks <- apply(task_data, 1, function(row) {
          taskItem(text = row[["text"]],
                   value = row[["value"]])
        })

        dropdownMenu(type = "tasks", .list = tasks)
      })

和UI方面:

dashboardHeader(dropdownMenuOutput("task_menu"))

您是否知道如何使用infoBoxes作为dashboard中的fluidRow的一部分?

具体来说,我有一个包含类别,标题,描述,图标和Web链接等属性的数据框,我想生成一个仪表板,以比用户更友好的方式显示此信息而不仅仅是数据表。理想情况下,我也会为每个类别生成标签(而不是对它们进行硬编码并相应地过滤)。

下面是一个可重现的代码,用于将数据呈现为表格。我想将每一行渲染为一个信息框,或者比数据表更可视的东西,以及可能在其自己的选项卡中的每个类别。

library(shiny); library(shinydashboard)
library(plyr);library(dplyr)

apps_directory <- data.frame(category = c('Movies','Books','Movies','Movies','Books'), 
                             title = c('Lord of the Rings','Neverending story','Batman','Superman','The little prince'), 
                             description = c('This..', 'This..', 'This..', 'This..', 'This..'), 
                             icon = c('rocket', 'rocket', 'rocket', 'rocket','rocket'), 
                             PageURL = c('http://www.google.com', 'http://www.google.com', 'http://www.google.com','http://www.google.com','http://www.google.com'))

#add html link tags
apps_directory$PageURL <- paste0("<a href='",apps_directory$PageURL,"'>",apps_directory$PageURL,"</a>")

header <- dashboardHeader(disable = TRUE)

sidebar <- dashboardSidebar(disable = TRUE)

body <- dashboardBody(
  tableOutput("view")
)

server <- function(input, output) {
  output$view <- renderTable({apps_directory}
                             , sanitize.text.function = function(x) x)
}


ui <- dashboardPage(header = header,
                    sidebar = sidebar,
                    body = body
)
shinyApp(ui, server)

谢谢!

1 个答案:

答案 0 :(得分:0)

希望这可能对你有所帮助;)

A 2
B 2
C 1