我想使用DT::datatble.
例如:
library(tidyverse)
data(mtcars)
mtcars <- mtcars %>% mutate(across(everything(), as.character))
datatable(mtcars[, c("vs", "am")]) %>%
formatStyle("vs", backgroundColor = styleEqual(rep(0, sum(mtcars$vs == 0)), rep("yellow", sum(mtcars$vs == 0)))) %>%
formatStyle("am", backgroundColor = styleEqual(rep(1, sum(mtcars$am == 1)), rep("yellow", sum(mtcars$am == 1))))
在實際情況下,我有多個列,我想迭代所有列以添加formatStyle. 有沒有辦法%>% formatstyle()在回圈中復制:
# something to start
l <- list()
l[["vs"]] <- 0
l[["am"]] <- 1
datatable(mtcars[, c("vs", "am")]) %>%
lapply(l, function(i) {
i ... # multiple formatStyle()
})
對每一列進行迭代的目的不是突出顯示1invs或0in am。
謝謝!
uj5u.com熱心網友回復:
一個選擇是做一個for回圈和更新
library(dplyr)
library(DT)
mtcars <- mtcars %>%
mutate(across(everything(), as.character))
dt1 <- datatable(mtcars %>%
select(vs, am))
nm1 <- list(vs = 0, am = 1)
for(i in seq_along(nm1)) {
dt1 <- dt1 %>%
formatStyle(names(nm1)[i], backgroundColor = styleEqual(rep(nm1[[i]],
sum(mtcars$vs == nm1[[i]])), rep("yellow", sum(mtcars$vs == nm1[[i]]))))
}
dt1
-輸出

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/383108.html
