ShinyDashboard Dynamic Bullet Points - PullRequest
       7

ShinyDashboard Dynamic Bullet Points

0 голосов
/ 23 октября 2018

Надеюсь, у меня простая задача передать упорядоченный список тегов в Shiny Dashboard.То, что я хотел бы сделать, - это иметь функцию, которая составляет упорядоченный список точек на основе отфильтрованной категории.

Вот тривиальный пример того, что я хотел бы сделать с фреймом данных 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))
 }
})),

Но это просто оставляет поле пустым и не заполняет поле точкой маркера для каждого наблюдения.

Есть предложения?Спасибо!

1 Ответ

0 голосов
/ 23 октября 2018

Я бы использовал 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)
...