我试图在R中创建一个可格式化的表。我已经可以使用formattable创建一个颜色取决于值的表。但是有一个细胞我只想变成红色,不管里面是什么,我不知道该怎么做。
result_table <- cbind(Normal = c(1,2,3), Fraud = c(4,5,6))
row.names(result_table) <- c('Normal', "Suspicious", "Fraud")
my_df <- as.data.frame(result_table)
formattable(my_df)我想把正常与正常的绿色,欺诈与欺诈的绿色,正常的与欺诈的红色,欺诈与正常的红色。但是,由于我在报告中的其他表中也使用了formattable,所以我也想在这里使用它(这样,我的报告中的所有表都具有相同的样式)。
发布于 2019-07-17 11:39:30
好的,这里有一个解决方案,虽然不是一个完美的解决方案。首先,我们定义格式化器--接收数据并将其转换为HTML代码的函数:
red.f <- formatter("span", style=x~style(color="red"))
green.f <- formatter("span", style=x~style(color="green"))使这些函数具有条件是可能的,但不幸的是,格式化程序既没有很好的文档,也没有作者预见到您的问题。
那么现在。
my_df2 <- sapply(colnames(my_df), function(cn) {
sprintf(
ifelse(cn == rownames(my_df), green.f("%s"), red.f("%s")),
my_df[,cn]
)
})
my_df2 <- data.frame(my_df2)
rownames(my_df2) <- rownames(my_df)
formattable(my_df2)说明:我无法找到将ifelse放入格式化程序中的方法。因此,我创建了一个以%s作为占位符的字符向量,并使用sprintf填充列中的值。然后,使用sapply将向量组合到矩阵中,将其转换为数据帧,添加行名和预置。
https://stackoverflow.com/questions/57073513
复制相似问题