R formattable: использование области (строки) и функции для определения цвета ячейки - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь использовать formattable для построчного окрашивания ячеек на основе значения в другом столбце с помощью функций a и b. Я начал с тестирования своих функций с использованием formattable и указания по столбцам, и он работает нормально (изображение A)

Затем я переключился на использование вызова области, и функции делают что-то напуганное и не возвращают правильные цвета (В). Любая идея, что это проходит как тест $ среднее?

Спасибо за тонну! Извините, что изображения не могут быть вставлены, это мой первый вопрос переполнения стека!

library(formattable)
library(data.table)

#sample data
test = data.table(a=c(10, 10, 8),
                  b=c(9, 11, 12),
                  c=c(9.2, 10, 6))
test$average = rowMeans(test)

##test functions
func_a = function(x,y) {
  min = y-(0.05*y)
  max = y+(0.05*y)
  test = x > min & x < max
  test
}

func_b = function(x,y) {
  min = y-(0.10*y)
  max = y+(0.10*y)
  test = x > min & x < max
  test
}

#sample format
sample_format = formatter("span", style = x~style(display = "block",
                  font.weight = "bold", 
                  color = "white",
                  "border-radius" = "4px",
                  "padding-right" = "4px",
                  "background-color" =  
                  ifelse(func_a(x, test$average), 'green',
                       ifelse(func_b(x, test$average), "#FFDB58", 'red'))))

#Correct implementation column wise, except this isn't what I ultimately want
formattable(test, align = c('l', rep('c', ncol(dt))),
            list(a = sample_format,
                 b = sample_format,
                 c = sample_format))

#Incorrect - why isn't this matching the first row above?
formattable(test, align = c('l', rep('c', ncol(dt))),
                 area(row=1, col=1:3) ~  sample_format))

(A) Правильная реализация функций по строкам (B) Неправильные цвета - почему строка 1 не соответствует изображению выше?

...