DT::datatables() 生成 html table 显示使用列级别搜索时显示异常(缺少字符)

DT::datatables() generated html table shows display anomalies (missing characters) when column level search is used

我正在尝试将交互式 sortable tables 放入 html 通过使用 R 脚本中的 rmarkdown::render 生成的摘要。为了生成 tables,我使用 DT 包中的 datatables() 。报告生成得很好并且 table 看起来很不错,直到您执行列级别 filter/search,之后显示显示一些有趣的问题。通过以下示例,我的问题将变得更加清楚。

#' ---
#' title: "Test"
#' author: test
#' output: 
#'   html_document:
#'     toc: true
#' ---

#' <style type="text/css">
#'   .main-container {
#'     max-width: 1200px;
#'     margin-left: auto;
#'     margin-right: auto;
#'   }
#' </style>

#' ### Test data

#+ setup, include=FALSE, echo=TRUE
require(dplyr)
require(DT)
knitr::opts_chunk$set(echo = TRUE)

#+ core_code, include=FALSE, echo=TRUE 
plants <- read.csv("https://vincentarelbundock.github.io/Rdatasets/csv/cluster/plantTraits.csv")
plants<- plants %>% 
  mutate( ID = paste0("ID_" , sprintf("%04d", 1:136)  )  ) %>%
  select(ID, X:unsp)

#+ test_table, echo = FALSE
datatable( plants ,
           extensions = c("Buttons" , "FixedColumns"),
           filter = 'top',
           options = list( autoWidth = TRUE , 
                           dom = 'Blftip',
                           pageLength = 100,
                           searchHighlight = TRUE,
                           buttons = c('copy', 'csv', 'print'),
                           scrollX = TRUE,
                           fixedColumns = list(leftColumns = 2)),
           class = c('compact cell-border stripe hover') ,
           rownames = FALSE) 

生成 table(屏幕截图):

如果我在 ID 列中搜索 048,它会显示正确的行,如下所示...

但是,如果我取消过滤器并恢复所有行,则 ID 列中的行缺少字符。

我搜索的任何列或任何其他数据都会发生这种情况。如果我使用主搜索框(在右侧上角),则不会发生这种情况。我在 Mac(OS X 10.11.6) 上使用 运行 RStudio(版本 1.1.463),但我已经在 Chrome 上测试了生成的 html 文件, Mac 上的 Safari 和 RStudio 内置浏览器; Chrome 和 IE 在 Win7 上。关于如何解决这个问题的任何线索?

这算不上真正的解决办法,更多的是规避问题。由于没有任何建议,我开始禁用我正在使用的所有选项,结果是突出显示的搜索结果导致了这个问题。所以如果我这样做:

#+ test_table, echo = FALSE
datatable( plants ,
           extensions = c("Buttons" , "FixedColumns"),
           filter = 'top',
           options = list( autoWidth = TRUE , 
                           dom = 'Blftip',
                           pageLength = 100,
                           searchHighlight = FALSE,
                           buttons = c('copy', 'csv', 'print'),
                           scrollX = TRUE,
                           fixedColumns = list(leftColumns = 2)),
           class = c('compact cell-border stripe hover') ,
           rownames = FALSE) 

现在可以正常使用了。