首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中带Formattable包的逐行条件数

R中带Formattable包的逐行条件数
EN

Stack Overflow用户
提问于 2020-09-25 16:39:08
回答 1查看 1.2K关注 0票数 1

我想知道如何为表分配条件格式,以便每行都有需要满足的不同条件。因此,在统计行中,如果值<0.96,则变为红色;在p值行中,如果值> 0.05,则变为红色。

我正在根据以下数据进行格式化

代码语言:javascript
复制
df_try
    Normal        Jan        Feb
1  stistic 0.93069466 0.90404849
2 p-values 0.05123532 0.01056474

我的条件格式在代码imporvement_formatter中,但很自然,它会将所有值变为红色,因为它们都是<0.96。我需要下一行的第二个条件,它适用于>0.05的条件。

代码语言:javascript
复制
i2 <- df_try %>%
+   select(c(`Normal`,`Jan`, `Feb`))
> formattable(i2)
improvement_formatter <- 
+   formatter("span", 
+             style = x ~ style(
+               font.weight = "bold", 
+               color = ifelse(x < 0.96, customRed, "black")))
> 
> formattable(i2, align =c("l","c","c"), list(
+   `Indicator Name` = 
+     formatter("span", style = ~ style(color = "grey",font.weight = "bold")), 
+   `Jan` = improvement_formatter
+ ))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-25 19:56:15

请看一下area函数。它有助于在行而不仅仅是列上使用格式化程序。因此,您可以像以前一样定义格式化程序,然后在特定的行和列上具体使用它们。下面是一个示例:

代码语言:javascript
复制
library(formattable)

df_try <- structure(list(Normal = structure(2:1, .Label = c("p-values", 
                                                            "stistic"), class = "factor"), Jan = c(0.93069466, 0.05123532
                                                            ), Feb = c(0.90404849, 0.01056474)), class = "data.frame", row.names = c("1", 
                                                                                                                                     "2"))

first_col_formatter <- formatter("span", 
                                 style = ~ style(color = "grey",
                                                 font.weight = "bold"))

improvement_formatter <- formatter("span", 
                style = x ~ style(
                font.weight = "bold", 
                color = ifelse(x < 0.96, "red", "black")))

improvement2_formatter <- formatter("span", 
                                   style = x ~ style(
                                     font.weight = "bold", 
                                     color = ifelse(x > 0.05, "red", "black")))

formattable(df_try,
            align =c("l","c","c"),
            list(Normal = first_col_formatter,
              area(row = 1, col = -1) ~ improvement_formatter,
                 area(row = 2, col = -1) ~ improvement2_formatter))

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

https://stackoverflow.com/questions/64068147

复制
相关文章

相似问题

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