Применение форматируемого формата ко всем столбцам одновременно

Я хочу преобразовать фрейм данных в форматируемую таблицу и добавить собственный формат в каждый столбец. Есть ли способ применить формат ко всем столбцам, не вызывая их специально? Вот пример кода, объясняющий, что у меня сейчас есть:

library(formattable)    

# create df
col1 <- c(0, -2, 4)
col2 <- c(-1, 0, 2)
col3 <- c(-1, -1, 0)
df <- data.frame(col1, col2, col3)

# set colors
red <- "#ff7f7f"
blue <- "#7f9dff"
white <- "#ffffff"

# add custom format
color_format <- formatter('span', 
                          style = x ~ style(color = ifelse(x > 0, blue, 
                                                           ifelse(x < 0, red, white))))

# create table
formattable(df, 
            list("col1" = color_format,
                 "col2" = color_format,
                 "col3" = color_format))

У меня есть еще несколько столбцов, и их имена иногда меняются, поэтому мне нужен способ не вызывать каждый столбец вручную.


person hirshg    schedule 14.02.2021    source источник


Ответы (1)


Попробуйте использовать lapply

myForm <- function(x) {
              formatter('span',
                        style = x ~ style(
                          color = ifelse(x > 0, blue,
                                         ifelse(x < 0, red, white))
                        ))
}
formattable(df, lapply(df, myForm))
person Peace Wang    schedule 14.02.2021