R Блестящая переменная упорядоченного или неупорядоченного списка

Я хотел бы использовать упорядоченный / неупорядоченный список, такой как следующий:

tags$ul(
    tags$li("Item 1"),
    tags$li("Item 2"),
    tags$li("Item 3"),
    tags$li("Item 4")
)

Однако я хотел бы, чтобы количество элементов в списке зависело от какого-то другого фактора; то есть не фиксированного размера. Это возможно?

Например, если мой символьный вектор окажется размером 3, то я хочу отобразить три элемента в нем в виде трех отдельных строк. Если вектор имеет размер 10, то это должен быть упорядоченный / неупорядоченный список с 10 уровнями.

Итак, просим две вещи здесь:

  1. Составьте упорядоченный / неупорядоченный список разного размера в зависимости от некоторой переменной
  2. Отображать определенный текст на каждом из уровней, который также варьируется в зависимости от того, какие строки отображаются

1 ответ

Shiny достаточно умен, чтобы, если вы передадите список тегов HTML uiOutput он поместит каждый из них на отдельной строке в автоматически сгенерированном HTML-коде. Итак, вы можете использовать apply составить список tags$li объекты, а затем передать их uiOutput чтобы отобразить их на своей странице:

library(shiny)

ui <- fluidPage(
    tags$ul(
        uiOutput('list')
    )

)

server <- function(input, output, session) {
  df <- data.frame(item = c('item 1', 'item 2', 'item 3'), num = c(2,3,4))

  output$list <- renderUI({
        apply(df, 1, function(x) tags$li(x['item'], "The SCORE IS: ", x['num']))
  })
}

shinyApp(ui, server)

Вы можете расширить это, как вы хотите. Пока функция в apply возвращает tags$li объект, вы можете сделать его настолько сложным, насколько вы хотите.

Другие вопросы по тегам