【问题标题】:How to add bullet points in R Shiny's renderText?如何在 R Shiny 的 renderText 中添加要点?
【发布时间】:2022-02-21 21:13:32
【问题描述】:

我正在使用renderText 在我的 Shiny Web 应用程序中显示一些动态输出。现在如何在动态输出中包含项目符号?

【问题讨论】:

  • 通过返回完整的“<ul><li>...text...</li><li>...more text...</li></ul>”响应,也许??
  • @hrbrmstr 谢谢,但renderText("<ul><li>...text...</li><li>...more text...</li></ul>") 不起作用,因为 HTML 标记也与文本一起输出。
  • 你能把它切换到verbatimTextOutput - inside-r.org/packages/cran/shiny/docs/verbatimTextOutput 吗?刚刚意识到我的本地 HTML 示例正在使用该与 renderText
  • 如果你知道降价,你也可以在renderUI中使用includeMarkdown函数

标签: r shiny


【解决方案1】:

假设您使用的是 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。然后,您可以使用uiOutputUI.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>"))

您可以在docs 中找到有关renderUI 的更多信息,并在tutorial 中找到有关将其用于动态 UI 的简要说明。

【讨论】:

  • 是的,但我认为他必须使用renderUI 而不是renderText
  • 据我所知,您不需要任何 render* 函数。您可以直接输入HTMLtags。无论如何,我在以前的 Shiny 版本 (0.7.0) 中遇到了 renderUI 的问题,因为它没有正确呈现特殊的转义字符,例如 &amp;uacute;。当然,这可能已在以后的版本中得到纠正。
  • OP 要求 dynamic 输出。
  • 哦,对不起,你是对的。当我阅读问题时,我错过了动态词。我将编辑我的答案以包含您的建议。感谢您的提示。 :-)
  • @JdP,这取决于您的需求,但我认为您可以预先生成,因为它适合您传递给 HTML 调用的 html 字符串
【解决方案2】:

我刚刚遇到了同样的问题,并想出了一种使用降价格式的方法。

ui.R:

uiOutput("myList")

服务器.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 = "")

【讨论】:

    猜你喜欢
    • 2018-02-28
    • 2017-02-20
    • 2020-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-17
    相关资源
    最近更新 更多