在闪亮的DT表中突出显示预定义的单词[不通过搜索突出显示]

时间:2018-07-23 08:01:56

标签: r shiny dt

我正在创建一个闪亮的应用程序,我想突出显示DT表中的某些预定义单词。我知道DT中的搜索突出显示功能。例如:

datatable(mtcars2, options = list(searchHighlight = TRUE, search = list(search = 'da')))

我想像上一个示例一样突出显示,但不是从搜索中突出显示。例如,在 mtcars 数据中,我要突出显示'Merc','Fiat','Honda'单词,而不在 search 中提供的桌子。表格出现后,单词将突出显示,而不是整个单元格。

有办法吗?

1 个答案:

答案 0 :(得分:2)

您可以使用tableHTML

library(tableHTML)

在此答案中始终使用mtcars数据集:

使用tableHTML函数创建一个tableHTML()对象。如果列(在本例中为行名,即索引0contains是一个特定单词,则应用条件CSS。应用的css只是使用黄色突出显示背景:

mtcars %>% 
  tableHTML() %>% 
  add_css_conditional_column(columns = 0,
                             conditional = "contains",
                             value = "Toyota",
                             css = list(c("background-color"),
                                        c("yellow")))

结果是:

result_1

如果要匹配许多单词,则可以创建单词向量:

words <- c("Merc", "Fiat", "Honda")

创建基本的tableHTML对象:

tableHTML <- mtcars %>% 
  tableHTML() 

并使用循环将css单词逐字应用:

for (word in words) {
  tableHTML <- tableHTML %>% 
    add_css_conditional_column(columns = 0,
                               conditional = "contains",
                               value = word,
                               css = list(c("background-color"),
                                          c("yellow")))
}

结果是:

output_2

如果只想突出显示某个子字符串,则可以修改数据并在子字符串周围包含span并在其中应用CSS。

library(magrittr) # for the %<>% pipe

rownames(mtcars) %<>% 
  stringr::str_replace_all(c('Merc' = '<span style="background-color:yellow">Merc</span>',
                  'Fiat' = '<span style="background-color:yellow">Fiat</span>',
                  'Honda' = '<span style="background-color:yellow">Honda</span>'))


mtcars %>% 
  tableHTML()

结果是:

output_3