我有一个与此类似的数据框:
data <- data.frame(
Time = c(1, 2, 3, 4, 5, 6, 7, 8),
Rider = c("Rider1", "Rider2", "Rider3", "Rider4", "Rider1", "Rider2", "Rider3", "Rider4"),
Rider1 = c(10, 20, 15, 25, 30, 45, 30, 43),
Rider2 = c(12, 22, 14, 24, 32, 30, 56, 75),
Rider3 = c(9, 19, 11, 21, 29, 40, 20, 19),
Rider4 = c(11, 21, 13, 23, 31, 29, 40, 20)
)
我正在制作一个 rmd,并希望使用 R 中的
DT
包将此数据框显示为数据表。我想格式化该表,使其看起来像这样,其中 Rider 列中的行与该列相匹配的值名称突出显示(理想情况下更改背景颜色):
我已经尝试过这个和其他一些选项,但没有成功。
datatable(data) %>%
formatStyle(
columns = c("Rider1", "Rider2", "Rider3", "Rider4"),
valueColumns = "Rider",
backgroundColor = styleEqual(data$Rider, c("Rider1" = "yellow", "Rider2" = "lightblue", "Rider3" = "lightgreen", "Rider4" = "lightpink"))
)
如有任何建议,我们将不胜感激,如果
DT
不起作用,甚至可以提供不同的餐桌套餐。谢谢!
从附加列中获取颜色值,并使用 forloop 为每列分配背景颜色:
#matrix with diagonal values set to colours
m <- matrix(NA, nrow = 4, ncol = 4)
diag(m) <- "red"
# [,1] [,2] [,3] [,4]
# [1,] "red" NA NA NA
# [2,] NA "red" NA NA
# [3,] NA NA "red" NA
# [4,] NA NA NA "red"
#make dt object hiding colour columns
x <- datatable(cbind(data, rbind(m, m)),
options = list(columnDefs = list(list(visible = FALSE,
targets = 7:10))))
#loop through columns and set colour from colour columns 7:10
for(i in 3:6){
x <- x %>%
formatStyle(i, valueColumns = i + 4, backgroundColor = JS("value"))
}
x