使用kableExtra时,带小于号的无前导零p值末尾现多余大于号的求助
解决kableExtra中escape=FALSE时无前导零p值的多余大于号问题
问题出在digits参数被应用到了字符型的my_pvalue列上:当开启escape=FALSE时,kable会尝试把带<的字符p值当成数值来格式化,最终导致渲染出多余的>。以下是几种可行的解决方法:
方案1:跳过字符型p值列的digits格式化
把digits参数中对应my_pvalue列的位置设为NA,让kable不对该列做数值格式化处理:
df <- data.frame(x=c("okA","okB","okC","problem", "okD"), my_pvalue=c("0.08", ".43", "<0.001", "<.001", "0.01"), y=c(1,2,3,4,5)) df %>% kableExtra::kable(escape = FALSE, digits = c(0, NA, 0)) %>% # 第二列设为NA,跳过格式化 kable_classic()
方案2:预先统一p值格式(可选)
如果想让p值格式更规范,可先处理字符串再输出,同时保持digits参数的正确设置:
library(dplyr) df <- df %>% mutate(my_pvalue = case_when( my_pvalue == ".43" ~ "<0.43", # 补上前导零,格式更统一 TRUE ~ my_pvalue )) df %>% kableExtra::kable(escape = FALSE, digits = c(0, NA, 0)) %>% kable_classic()
方案3:使用kbl函数替代kable
kableExtra的kbl函数对字符列的处理更友好,同样能保留escape=FALSE的功能且避免格式错误:
df %>% kableExtra::kbl(escape = FALSE, digits = c(0, NA, 0)) %>% kable_classic()
以上方法都能让<.001这类p值正常显示,不会出现多余的>,同时保留escape=FALSE以满足脚注、斜体等需求。
内容的提问来源于stack exchange,提问作者user16822752
相关产品推荐
相关产品推荐

