Я ищу способ условного форматирования корреляционной матрицы в flextable, чтобы при заданном значении (например, .5) выделялись ячейки, превышающие это значение. Я просмотрел предыдущие вопросы об условном форматировании по SO, но не смог реализовать решение. Вот мое представление, которое в итоге выделяет все ячейки:

my_data <- mtcars[, c(1,3,4,5,6,7)] #data
res <- cor(my_data) #initial correlation matrix

res[upper.tri(res)] <- NA # erase the upper triangle
diag(res) <- NA 

res %>%
  as.data.frame() %>%
  rownames_to_column("var") %>%
  flextable::flextable() %>%
  flextable::bg(i = rownames(res) > .5, j = 2:ncol(res), bg = "light blue")
0
acircleda 12 Фев 2021 в 18:33

1 ответ

Лучший ответ

Это возможное решение:

library(flextable)
library(magrittr)
library(tibble)

my_data <- mtcars[, c(1,3,4,5,6,7)] #data
res <- cor(my_data) #initial correlation matrix

res[upper.tri(res)] <- NA # erase the upper triangle
diag(res) <- NA 

res %>%
  as.data.frame() %>%
  rownames_to_column("var") %>%
  flextable::flextable() %>%
  flextable::bg(j = 2:ncol(res), 
                bg = function(x){
                  out <- rep("transparent", length(x))
                  out[x < .5] <- "light blue"
                  out
                })

enter image description here

0
David Gohel 12 Фев 2021 в 15:44