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

R Shiny中crosstalk filter_select的&符号转义异常解决咨询

解决crosstalk filter_select中转义&的问题

问题根源是crosstalk的filter_select会自动对选项文本做HTML转义,导致&被转换成&。以下是两种可行的解决方法:

方案一:自定义selectize渲染函数

修改filter_select的options参数,指定选项渲染时不转义文本,直接显示原始内容:

library(reactable)
library(tidyverse)
library(crosstalk)
library(shiny)
library(htmlwidgets)

df <- tibble(points = c(10, 12, 14), 
             stadium = c("M&T Bank Stadium", "Wembley Stadium", "FirstBank Stadium"))

df_crosstalk <- SharedData$new(df)

df_react <- reactable(df_crosstalk)

ui <- fluidPage(
  titlePanel("Test Ampersand"),
  fluidRow(
    column(
      4,
      filter_select(
        id = "stadium",
        label = "Stadium",
        sharedData = df_crosstalk,
        group = ~stadium,
        # 自定义渲染逻辑,关闭HTML转义
        options = list(
          render = list(
            option = JS("function(item, escape) { return item.label; }")
          )
        )
      )
    ),
    column(
      8,
      df_react
    )
  )
)

server <- function(input, output, session) {
  output$table <- renderReactable({
    df_react
  })
}

shinyApp(ui, server)

默认的selectize渲染函数会用escape(item.label)转义HTML字符,这里直接返回item.label,让浏览器自动解析&amp;为&。

方案二:将数据列标记为HTML内容

在创建数据框时,用htmltools::HTML()将体育场名称标记为HTML内容,告诉crosstalk无需转义:

library(reactable)
library(tidyverse)
library(crosstalk)
library(shiny)
library(htmltools)

df <- tibble(points = c(10, 12, 14), 
             stadium = map(c("M&T Bank Stadium", "Wembley Stadium", "FirstBank Stadium"), HTML))

df_crosstalk <- SharedData$new(df)

df_react <- reactable(df_crosstalk)

ui <- fluidPage(
  titlePanel("Test Ampersand"),
  fluidRow(
    column(
      4,
      filter_select(
        id = "stadium",
        label = "Stadium",
        sharedData = df_crosstalk,
        group = ~stadium
      )
    ),
    column(
      8,
      df_react
    )
  )
)

server <- function(input, output, session) {
  output$table <- renderReactable({
    df_react
  })
}

shinyApp(ui, server)

这种方法通过R端标记HTML内容,让crosstalk直接按HTML规则解析显示文本,避免自动转义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 03:45:42