我正在使用renderText
在我的Shiny Web应用中展示一些动态输出。那么,如何在动态输出中包含项目符号?
如果您使用的是 UI.R
而不是自定义的 HTML UI,则应该能够使用 HTML
函数或 tags
函数来实现此功能。
请注意,我是凭记忆编写的,所以代码未经测试。
HTML("<ul><li>...text...</li><li>...more text...</li></ul>")
或者tags$div(
tags$ul(
tags$li("text")
)
)
更新:我最初错过了您问题中的dynamic一词,这就是为什么我只提到了UI.R
(感谢@StephaneLaurent指出)。
为了使您的项目列表变得动态,您应该在server.R
中使用renderUI
。此函数期望它所包装的表达式是HTML。然后,您可以使用uiOutput
在UI.R
中指定列表的位置。
代码大致如下:
UI.R
#other elements before the list
uiOutput("myList")
#other elements after the list
server.R
output$myList <- renderUI(HTML("<ul><li>...text...</li><li>...more text...</li></ul>"))
renderUI
而不是renderText
。 - Stéphane Laurentrender*
函数。 您可以直接放置HTML
或tags
。 无论如何,在之前的Shiny版本(0.7.0)中,我在使用renderUI
时遇到了问题,因为它没有正确呈现特殊转义字符,例如ú
。 当然,这可能已经在后来的版本中得到了纠正。 - Guillem Vicenspaste('<ul><li>', paste(unlist(dynamicList), collapse = '<ul><li>'), '<ul><li>')
- JdPrenderUI
/uiOutput
或renderText
/htmlOutput
中:#' Format character vector into HTML bulleted list
#'
#' @param char a character vector. Each element will be a bullet
#' @param ordered logical (T/F). If `TRUE`, return numbered list.
#'
#' @keywords internal
format_html_list <- function(char, ordered = FALSE){
seps <- c("<li>", "</li>")
html_wrapper <- if(ordered) c("<ol>", "</ol>") else c("<ul>", "</ul>")
bullets <- paste0(seps[1], char, seps[2], collapse = "")
html_list <- paste0(html_wrapper[1], bullets, html_wrapper[2])
return(html_list)
}
ui <- fluidPage(
htmlOutput("bulleted_list")
)
server <- function(input, output, session) {
output$bulleted_list <- renderText({
format_html_list(c("hello", "there"))
})
}
shinyApp(ui, server)
我刚遇到了同样的问题,并想出了一种使用Markdown格式的方法。
ui.R:
uiOutput("myList")
server.R:
output$myList <- renderUI(HTML(markdown::renderMarkdown(text = "- item1\n- item2\n- item3\n"
)))
paste()
和paste0()
来动态构建项目列表的Markdown,就像这样:items <- c("item1", "item2", "item3")
paste(paste0("- ", items, "\n"), collapse = "")
<ul><li>...文本...</li><li>...更多文本...</li></ul>
"响应,也许可以解决这个问题? - hrbrmstrrenderText("<ul><li>...text...</li><li>...more text...</li></ul>")
不起作用,因为 HTML 标签也会随着文本一起输出。 - mchenverbatimTextOutput
吗?- http://www.inside-r.org/packages/cran/shiny/docs/verbatimTextOutput?我刚意识到我的本地示例使用的是HTML,而不是renderText
。 - hrbrmstrrenderUI
中使用includeMarkdown
功能。 - Stéphane Laurent