如何在R中的格式表中为一个单元格着色

时间:2019-07-17 10:12:56

标签: r formattable

我正在尝试在R中使用formattable创建一个表。我已经可以使用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)

我要为正常vs正常绿色,欺诈vs欺诈绿色,正常vs欺诈红色,欺诈vs正常红色上色。但是,由于我还在报表中的其他表中使用了formattable,因此我也想在这里使用它(以便报表中的所有表具有相同的样式。)

1 个答案:

答案 0 :(得分:0)

好的,所以这是 a 解决方案,尽管不是一个完美的解决方案。首先,我们定义格式化程序–接收数据并将其转换为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将向量组合成矩阵,将其变成数据框,添加行名并保存。

相关问题