首页 > 解决方案 > 使用 by_cases() 时,R 中的 Huxtable 格式错误

问题描述

当我运行这个

library(tidyverse)

df = data.frame(
  stringsAsFactors = FALSE,
              Type = c("a", "b", "c", "d"),
                 A = c(51, 5, 10, 155.5),
                 P1 = c(40.1, 50.5, 127.8, 216),
                 C = c(40, 45, 50, 255)
     )

library(huxtable)
ht = as_hux(df)
ht %>% map_text_color( row = 2:nrow(df), col = 2:3,
                    by_cases(. < 50 ~ "red")) %>%
  set_all_borders()
ht

我得到表:

问题是 127.8 大于 50 所以它不应该是红色的。如何让它成为我想要的?

标签: r

解决方案


根本问题是添加案例已将您的数字变为character(). 一种解决方法是使用by_cases(as.numeric(.) < 50 ~ "red"). 或者,写:

ht = as_hux(df, add_colnames = FALSE)
ht %>% map_text_color(col = 2:3,
                    by_cases(. < 50 ~ "red")) %>%
  add_colnames() %>%
  set_all_borders() %>%

它将数据保持为数字,直到您完成颜色映射。


推荐阅读