R Shiny变量有序或无序列表

时间:2018-05-18 14:35:07

标签: r shiny bulletedlist varying numbered-list

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

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

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

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

所以在这里要求两件事:

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

1 个答案:

答案 0 :(得分: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对象,您就可以将其设置为您想要的复杂。