Posiadam data.frame z jedną kolumną ID i wieloma kolumnami numerycznymi, ilość kolumn numerycznych może się różnić. Z tych kolumn numerycznych chcę pokolorować wszystkie wartości powyżej średniej kolumny zielonej, a wszystkie wartości poniżej kolumny oznaczają średnią czerwoną. Poniższy kod daje pożądany wynik, ale nie jest to ogólny kod dla ramek danych z mniej lub bardziej numerycznymi kolumnami.formatStyle w wielu kolumnach DT R
library(DT)
data2 <- cbind(ID = "some ID",iris[,1:4])
datatable(
data2, rownames = FALSE, class = 'cell-border stripe',
options = list(
dom = 't', pageLength = -1, lengthMenu = list(c(-1), c('All'))
)
) %>%
formatStyle(colnames(data)[2], backgroundColor = styleInterval(mean(data[,2]), c("red","green"))) %>%
formatStyle(colnames(data)[3], backgroundColor = styleInterval(mean(data[,3]), c("red","green"))) %>%
formatStyle(colnames(data)[4], backgroundColor = styleInterval(mean(data[,4]), c("red","green"))) %>%
formatStyle(colnames(data)[5], backgroundColor = styleInterval(mean(data[,5]), c("red","green")))
Chciałbym zastąpić powyższy kod poniższym kodem, ale to nie działa. Poniższy kod będzie działał również po zmianie liczby kolumn numerycznych.
datatable(
data2, rownames = FALSE, class = 'cell-border stripe',
options = list(
dom = 't', pageLength = -1, lengthMenu = list(c(-1), c('All'))
)
) %>%
formatStyle(colnames(data2)[2:ncol(data2)], backgroundColor = styleInterval(colMeans(data2[,2:ncol(data2)]), c("red","green")))
Czy to możliwe? Więc tak, jak?
Pomysł na macie rix z liczbami i macierz z odpowiednimi kolorami, nie działa, jeśli masz tę samą wartość w różnych kolumnach, gdy jest ona w jednej kolumnie czerwona, a w drugiej zielonej. Następnie poda kolor pierwszej kolumny – Berecht
Ah .. tak masz rację ... pomyśl o tym – Batanichek
Możesz jitter lub randomize to po określeniu kolorów. Tylko musisz mieć pewność, że utworzona liczba losowa jest niepowtarzalna. – Berecht