R Shiny 变量有序或无序列表

qan*_*nda 3 r bulletedlist varying shiny numbered-list

我想使用一个有序/无序列表,如下所示:

tags$ul(
    tags$li("Item 1"),
    tags$li("Item 2"),
    tags$li("Item 3"),
    tags$li("Item 4")
)
Run Code Online (Sandbox Code Playgroud)

但是,我希望列表中的项目数量取决于其他一些因素;也就是说,不是固定大小。这可能吗?

例如,如果我的字符向量最终大小为 3,那么我想将其中的三个元素显示为三个单独的行。如果向量的大小为 10,那么它应该是一个有 10 个级别的有序/无序列表。

所以在这里要求两件事:

  1. 根据某些变量制作不同大小的有序/无序列表
  2. 在每个级别中显示某些文本,这些文本也因显示的行而异

div*_*san 5

Shiny 足够聪明,如果您将 HTML 标签列表传递给 a,uiOutput它会将每个标签放在自动生成的 HTML 代码中的单独一行中。因此,您可以使用apply来制作tags$li对象列表,然后将它们传递给 auiOutput以在您的页面上显示它们:

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)
Run Code Online (Sandbox Code Playgroud)

您可以根据需要扩展它。只要 中的函数apply返回一个tags$li对象,您就可以将其设置为您想要的复杂程度。