【问题标题】:shiny renderTable omits unicode special characters闪亮的 renderTable 省略了 unicode 特殊字符
【发布时间】:2018-07-25 09:32:04
【问题描述】:

我在一个闪亮的应用程序中有一个表,其中包含 Unicode 特殊字符。但是它们在 tableOutput 中被省略了,根本没有显示出来。

library(shiny)


ui <- fluidPage(
      tableOutput("table")
)

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

    output$table = renderTable({

      mtcars[2,2]="◨"
      mtcars[1:3,1:3]
    }

    ,sanitize.text.function = identity)

}

shinyApp(ui = ui, server = server)

santitze.text.function 似乎没有任何区别。我相信这是 print.xtable 的一个选项 - 无论如何 print.xtable 可以在控制台中很好地再现字符。 如果我使用 renderDataTable 和 dataTableOutput,字符会显示得很好(作为实际的 Unicode 字符)。那么为什么它们不与 renderTable 和 tableOutput 一起出现呢?

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    这适用于 html 实体:

      output$table = renderTable({
    
        mtcars[2,2]="&#9704;"
        mtcars[1:3,1:3]
      }
    
      , sanitize.text.function = identity)
    

    如果不想在网上搜索html代码,可以这样获取:

    sprintf("&#%d;", utf8ToInt("◨"))
    

    最后,您可以按如下方式进行自动化。定义一个“消毒剂”功能:

    f <- function(x){
      xs <- strsplit(as.character(x), "")[[1]]
      paste0(sprintf("&#%d;", sapply(xs, utf8ToInt)), collapse="")
    }
    

    然后在renderTable中使用:

      output$table = renderTable({
    
        mtcars[2,2]="◨"
        mtcars[1:3,1:3]
      }
    
      , sanitize.text.function = function(x) sapply(x, f) )
    

    【讨论】:

    • 谢谢......原则上确实有效......不幸的是,表格可能有任意特殊字符,所以我必须检查和替换每个字符,这可能是资源密集型的。仍然想知道 renderTable 中是否只有一个选项可以阻止它剥离这些字符。
    • @StevePowell 查看我的编辑。我提供了一个可能的解决方案。
    猜你喜欢
    • 2018-12-03
    • 1970-01-01
    • 2019-08-03
    • 2014-06-30
    • 2021-11-28
    • 2021-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多