首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在我在R中形成的一个单元格中着色

如何在我在R中形成的一个单元格中着色
EN

Stack Overflow用户
提问于 2019-07-17 10:12:56
回答 1查看 1.2K关注 0票数 1

我试图在R中创建一个可格式化的表。我已经可以使用formattable创建一个颜色取决于值的表。但是有一个细胞我只想变成红色,不管里面是什么,我不知道该怎么做。

代码语言:javascript
复制
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,所以我也想在这里使用它(这样,我的报告中的所有表都具有相同的样式)。

EN

回答 1

Stack Overflow用户

发布于 2019-07-17 11:39:30

好的,这里有一个解决方案,虽然不是一个完美的解决方案。首先,我们定义格式化器--接收数据并将其转换为HTML代码的函数:

代码语言:javascript
复制
red.f <- formatter("span", style=x~style(color="red"))
green.f <- formatter("span", style=x~style(color="green"))

使这些函数具有条件是可能的,但不幸的是,格式化程序既没有很好的文档,也没有作者预见到您的问题。

那么现在。

代码语言:javascript
复制
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将向量组合到矩阵中,将其转换为数据帧,添加行名和预置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57073513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档