Объединение вывода kableExtra :: cell_spec () с пользовательскими методами форматирования S3 - PullRequest
1 голос
/ 04 апреля 2019

Я пытаюсь добавить цвета для условного форматирования в таблицу HTML, которая содержит несколько пользовательских классов S3. Как я могу сохранить методы форматирования, которые я использую для своих классов S3, и при этом изменить внешний вид ячеек в таблице?

Например:

library(dplyr)
library(kableExtra)

df <- data.frame(a = c(-1.2345, 0, 1.2345), b = c(-1.2345, 0, 1.2345))

format.myclass <- function(x, ...) {
  paste(round(x, 2), "♥")
}

class(df$a) <- c("myclass", class(df$a))
class(df$b) <- c("myclass", class(df$b))

В этом фрейме данных все числа отображаются правильно для этого класса:

> df
        a       b
1 -1.23 ♥ -1.23 ♥
2     0 ♥     0 ♥
3  1.23 ♥  1.23 ♥

Но это больше не работает, когда я добавляю свойства стиля kableExtra в ячейку:

df %>% mutate(a = cell_spec(a, color = ifelse(a<0, "red", "green"))) %>% 
  kable(., escape = F) %>%
  kable_styling()

Есть ли способ сохранить myclass форматирование при использовании cell_spec()?


Обновление: Вызов метода форматирования класса явно делает эту работу:

df %>% mutate(a = cell_spec(format.myclass(a), color = ifelse(a<0, "red", "green"))) %>% 
  kable(., escape = F) %>%
  kable_styling()

Но есть ли способ автоматически вызвать этот форматер для своего класса?

...