我在一个闪亮的应用程序中有一个表,其中包含Unicode特殊字符。但是它们在tableOutput中被省略了,根本没有显示。
library(plotly)
p <- plot_ly(DATAFINALE, x = ~MONTH_SALES, y = ~ DAY_SALES, z = ~HOURS_INS, color = ~cluster) %>%
add_markers() %>%
layout(scene = list(xaxis = list(title = x),
yaxis = list(title = y),
zaxis = list(title = z)))
p
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)
似乎没有任何区别。我相信这是print.xtable的选项-无论如何,print.xtable可以在控制台中很好地再现字符。
如果我使用renderDataTable和dataTableOutput,则这些字符可以正常显示(作为实际的Unicode字符)。那么为什么它们不与renderTable和tableOutput一起出现?
答案 0 :(得分:1)
这适用于html实体:
output$table = renderTable({
mtcars[2,2]="◨"
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) )