我有一个要根据行名和行中存在的值自定义的数据表。
自定义数据块的颜色通常由列名完成,而不由行名完成。
下面是我的数据框。
df <- data.frame(`1st`=c(100, 39, 5.6),
`2nd`=c(200, 70, 5.9),
`3rd`=c(230, 100, 6.3),
`4th`=c(300, 98, 7.0))
rownames(df) <- c("Bins", "Accuracy", "SubYeild")
在我的情况下,如果您查看第三行,即SubmissionYield,我希望该特定行的单元格如果大于6则为绿色,否则为红色。 有什么办法可以做到这一点?
答案 0 :(得分:1)
好的,这是使用flextable
包制作漂亮表的一种方法:
library(flextable) # may need install.packages("flextable") first
library(magrittr) # for the '%>%' piping function
df <- data.frame(`1st`=c(100, 39, 5.6),
`2nd`=c(200, 70, 5.9),
`3rd`=c(230, 100, 6.3),
`4th`=c(300, 98, 7.0))
rownames(df) <- c("Bins", "Accuracy", "SubYeild")
table <- df %>%
regulartable() %>% # turns it into a table
bg(i = 3, j = which(df[3, ] > 6), bg="green") %>%
bg(i = 3, j = which(df[3, ] <= 6), bg="red")
如果只想给文本加上颜色(而不是背景),则可以将bg
替换为color
。
flextable
是用于创建漂亮表的好程序包。希望这就是你的追求。
编辑:以某种方式错过了绿色/红色位,现在将其添加