首页 > 解决方案 > ShinyDashboard 动态要点

问题描述

我希望有一个简单的问题可以将标签有序列表传递给闪亮的仪表板。我想做的是有一个函数,它根据过滤的类别制作一个有序的项目符号列表。

这是我希望能够对名为 nba_teams 的数据框执行的操作的一个简单示例

teams    conference
Bulls    Eastern
Nuggets  Western
Celtics  Eastern
Lakers   Western

现在,如果我编写此函数,它将列出各个会议的列表:

for (row in 1:nrow(nba_teams)){
  teams <- nba_teams[row, "teams"]
  conference <- nba_teams[row,"conference"]

  if(grepl("Western",conference)){
   print(tags$li(teams))
 }
}

  • 掘金
  • 湖人队
  • 我想做的是将它放在一个标签框中,这样:

    box(
     title = "Western Conference",
     tags$ol(
      for (row in 1:nrow(nba_teams)){
      teams <- nba_teams[row, "teams"]
      conference <- nba_teams[row,"conference"]
    
      if(grepl("Western",conference)){
       print(tags$li(teams))
     }
    })),
    

    但这只是将框留空,并且不会在框内填充每个观察的项目符号。

    有什么建议么?谢谢!

    标签: rshinyshinydashboard

    解决方案


    我会lapply在这种情况下使用:

    library(shiny)  
    library(shinydashboard)
    
    nba_teams <- data.frame(team = c("Bulls", "Nuggest", "Celtics", "Lakers"),
                            conference = c("Eastern", "Western", "Eastern", "Western"))
    
    ui <- dashboardPage(
      dashboardHeader(),
      dashboardSidebar(),
      dashboardBody(
        box(
          title = "Western Conference",
          tags$ol(
            lapply(1:nrow(nba_teams), function(x) {
              if (nba_teams$conference[x]=="Western") {
                return(tags$li(nba_teams$team[x]))
              }
            })
          )
        )
      )
    )
    
    server <- function(input, output, session) {}
    
    shinyApp(ui, server)
    

    推荐阅读