我正在创建一个闪亮的应用程序,我想突出显示DT表中的某些预定义单词。我知道DT中的搜索突出显示功能。例如:
datatable(mtcars2, options = list(searchHighlight = TRUE, search = list(search = 'da')))
我想像上一个示例一样突出显示,但不是从搜索中突出显示。例如,在 mtcars 数据中,我要突出显示'Merc','Fiat','Honda'单词,而不在 search 中提供的桌子。表格出现后,单词将突出显示,而不是整个单元格。
有办法吗?
答案 0 :(得分:2)
您可以使用tableHTML
:
library(tableHTML)
在此答案中始终使用mtcars
数据集:
使用tableHTML
函数创建一个tableHTML()
对象。如果列(在本例中为行名,即索引0
)contains
是一个特定单词,则应用条件CSS。应用的css只是使用黄色突出显示背景:
mtcars %>%
tableHTML() %>%
add_css_conditional_column(columns = 0,
conditional = "contains",
value = "Toyota",
css = list(c("background-color"),
c("yellow")))
结果是:
如果要匹配许多单词,则可以创建单词向量:
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")))
}
结果是:
如果只想突出显示某个子字符串,则可以修改数据并在子字符串周围包含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()
结果是: