Как отобразить определенный заголовок столбца в Rhandsontable в конкретном цвете с помощью CSS? - PullRequest
0 голосов
/ 05 октября 2019

Я хотел бы изменить цвет заголовка определенных столбцов на определенный цвет, используя CSS. Например, кто-то может подсказать, как изменить цвет заголовков «mpg», «hp» и «gear» на красный, а в «dis», «wt» и «carb» изменить цвет на синий. следующий пример таблицы?

Мой вопрос почти аналогичен вопросу, опубликованному на этом форуме ранее .

library(shiny)
library(rhandsontable)

ui <- fluidPage(
  rHandsontableOutput("table1"),
  tags$style(type="text/css", "#table1 th {font-weight:bold;}")
)

server=function(input, output, session) {

  output$table1 <- renderRHandsontable({
    rhandsontable(head(mtcars),rowHeaders=F)
  })
}

shinyApp(ui,server)

1 Ответ

1 голос
/ 05 октября 2019

Требуются некоторые знания 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
        )
    })
}

enter image description here

...