Требуются некоторые знания HTML. Один из способов сделать это - преобразовать имена столбцов из простого текста в HTML:
library(shiny)
library(rhandsontable)
library(purrr)
library(glue)
table_headers <- colnames(mtcars)
table_headers_html <- purrr::map_chr(table_headers, function(column){
if(column %in% c('mpg', 'hp', 'gear')){
color = "red"
} else if (column %in% c('disp', 'wt', 'carb')) {
color = "blue"
} else {
color = "black"
}
glue::glue("<span style='color:{color}'>{column}</span>")
})
> table_headers_html
[1] "<span style='color:red'>mpg</span>" "<span style='color:black'>cyl</span>" "<span style='color:blue'>disp</span>"
[4] "<span style='color:red'>hp</span>" "<span style='color:black'>drat</span>" "<span style='color:blue'>wt</span>"
[7] "<span style='color:black'>qsec</span>" "<span style='color:black'>vs</span>" "<span style='color:black'>am</span>"
[10] "<span style='color:red'>gear</span>" "<span style='color:blue'>carb</span>"
Получив заголовки столбцов в HTML, вы можете сделать следующее в кодах сервера:
server=function(input, output, session) {
output$table1 <- renderRHandsontable({
rhandsontable(
head(mtcars),
rowHeaders=F,
colHeaders = table_headers_html
)
})
}