我想使用有序/无序列表,如下所示:
tags$ul(
tags$li("Item 1"),
tags$li("Item 2"),
tags$li("Item 3"),
tags$li("Item 4")
)
但是,我希望列表中的项目数量取决于其他因素;也就是说,不是固定大小。这可能吗?
例如,如果我的字符向量最终为3,那么我想将其中的三个元素显示为三个单独的行。如果向量的大小为10,那么它应该是一个有10个级别的有序/无序列表。
所以在这里要求两件事:
答案 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
对象,您就可以将其设置为您想要的复杂。