You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R Shiny的selectInput中显示HTML格式化学公式?

在R Shiny中实现selectInput显示HTML内容的方案

原生的selectInput无法直接渲染HTML内容,因为浏览器默认不会解析<option>标签内的HTML代码。不过可以通过以下两种高效方案实现你的需求:

方案一:使用shinyWidgets的pickerInput

shinyWidgets包的pickerInput组件支持渲染HTML选项,只需设置escape = FALSE即可禁用HTML转义,直接解析标签内容。

示例代码

library(shiny)
library(shinyWidgets)

ui <- fluidPage(
  pickerInput(
    inputId = "id",
    label = "Choice",
    choices = c('H<sub>2</sub>O', 'CO<sub>2</sub>', 'NH<sub>4</sub><sup>+</sup>'),
    options = list(escape = FALSE) # 关键设置:允许HTML渲染
  )
)

server <- function(input, output, session) {}

shinyApp(ui, server)

方案二:使用selectizeInput结合自定义渲染函数

selectizeInput允许通过JavaScript自定义选项的渲染逻辑,直接将HTML文本作为选项内容渲染:

示例代码

library(shiny)

ui <- fluidPage(
  selectizeInput(
    inputId = "id",
    label = "Choice",
    choices = c('H<sub>2</sub>O', 'CO<sub>2</sub>', 'NH<sub>4</sub><sup>+</sup>'),
    options = list(
      render = I("
        {
          item: function(item, escape) { return item.text; },
          option: function(item, escape) { return item.text; }
        }
      ")
    )
  )
)

server <- function(input, output, session) {}

shinyApp(ui, server)

注意事项

  • 修正了你示例中的HTML语法错误:NH<sub>4 </sub><sup>+<\sup>应改为NH<sub>4</sub><sup>+</sup>(闭合标签格式错误)。
  • 这两种方案都无需依赖MathJax或KaTeX,直接通过HTML原生渲染,性能更符合你的需求。

内容的提问来源于stack exchange,提问作者Lemniscomys

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 05:21:29