Как покрасить несколько ячеек в таблице данных, учитывая их индексы строк и столбцов в R блестящий - PullRequest
0 голосов
/ 06 февраля 2020

Мне нужен способ закрасить несколько ячеек в таблице данных, если даны их индексы строк и столбцов. Я нашел решение от здесь . Но здесь функция может окрашивать только 1 ячейку. Я хочу, чтобы он был изменен, чтобы он использовал вектор индексов строк и столбцов в качестве аргумента и окрашивал их. Любая помощь высоко ценится. Я прилагаю фрагмент кода ниже.

changeCellColor <- function(row, col){
  c(
    "function(row, data, num, index){",
    sprintf("  if(index == %d){", row-1),
    sprintf("    $('td:eq(' + %d + ')', row)", col),
    "    .css({'background-color': 'orange'});",
    "  }",
    "}"  
  )
}
datatable(iris, 
          options = list(
            dom = "t",
            rowCallback = JS(changeCellColor(1, 2))
          )
)

1 Ответ

1 голос
/ 06 февраля 2020

Это то, что вы хотите?

library(DT)

changeCellsColor <- function(rows, cols){
  stopifnot(length(rows) == length(cols))
  c(
    "function(row, data, num, index){",
    sprintf("  var rows = [%s];", paste0(rows-1, collapse = ",")),
    sprintf("  var cols = [%s];", paste0(cols, collapse = ",")),
    "  for(var i = 0; i < rows.length; ++i){",
    "    if(index == rows[i]){",
    "      $('td:eq(' + cols[i] + ')', row)",
    "        .css({'background-color': 'orange'});",
    "    }",
    "  }",
    "}"
  )
}
datatable(iris,
          options = list(
            dom = "t",
            rowCallback = JS(changeCellsColor(c(1,3), c(2,1)))
          )
)
...