与科学记数法 kableExtra table R markdown html 结合时,十进制后的数字不一致
Posted
技术标签:
【中文标题】与科学记数法 kableExtra table R markdown html 结合时,十进制后的数字不一致【英文标题】:Inconsistent digits beyond decimal when combined with scientific notation kableExtra table R markdown html 【发布时间】:2018-04-26 18:27:45 【问题描述】:我的问题来自我想要以不同格式设置的列。我希望所有列上的小数点之外的位数相同,但在最后一列中,我希望科学记数法显示非常小的数字的 p 值列。我仍然希望在小数点后为科学记数法显示相同的数字。我尝试了几种数字、宽度和格式的组合,但没有给出我想要的结果。
library(kableExtra)
library(knitr)
k.table <- mlr_table3 %>%
mutate(P_value= cell_spec((formatC(x=P_value, digits=3, width = 3, format='g', flag = "-", drop0trailing = TRUE, preserve.width = "common")), "html", color = ifelse(P_value <= 0.05, yes="red", no="blue"), escape = F)) %>%
mutate_if(is.numeric, function(x)
cell_spec((formatC(x,digits=2, width=3, format="f", flag="-", drop0trailing = FALSE)), "html")
) %>%
kable("html", escape = FALSE, align = "l", caption = "Summarized linear model with SSC Data") %>%
kable_styling(c("striped", "bordered"), full_width = F) %>%
column_spec(1, bold = T)
print.knitr_kable(k.table)
现在表格中的数字看起来像这样......
Summarized linear model with SSC Data
term estimate std.error statistic P_value
(Intercept) 14.93 0.35 43.24 1.06e-173
Cortland -5.58 1.00 -5.58 3.86e-08
Fire -4.00 1.68 -2.38 0.0179
Frost -1.64 1.09 -1.51 0.132
Haral -5.32 1.09 -4.90 1.28e-06
HoneyA -4.81 1.11 -4.35 1.63e-05
HoneyB -0.97 1.09 -0.89 0.373
Sake -2.12 1.09 -1.95 0.0517
Mac -1.88 1.14 -1.65 0.1
Sweet -1.71 1.09 -1.57 0.116
【问题讨论】:
【参考方案1】:要删除科学记数法,请使用format
并设置scientific = FALSE
> x <- 1e10
> x
[1] 1e+10
> format(x, scientific = FALSE)
[1] "10000000000"
要固定小数位数,请使用round
并设置digits
值
> x <- 0.0167
> round(x, digits = 2)
[1] 0.02
【讨论】:
【参考方案2】:使用我的huxtable
包的一种方式:
library(broom)
library(huxtable)
# example data frame:
tbl <- tidy(lm(mpg ~ gear + cyl, data = mtcars))
ht <- as_hux(tbl)
# 3 decimal places for columns 2-4:
number_format(ht)[, 2:4] <- 3
# 4 significant figures, and possible scientific notation, for the p values:
number_format(ht)[, 5] <- "%.4g"
ht
## (Intercept) 34.659 4.937 7.020 1.014e-07
## gear 0.652 0.904 0.721 4.766e-01
## cyl -2.743 0.373 -7.344 4.324e-08
Column names: term, estimate, std.error, statistic, p.value
您可以使用?sprintf
识别的任何东西,甚至可以定义自己的任意函数来格式化数字。在 Rmarkdown 文档中自动打印到 HTML 或 PDF。
【讨论】:
以上是关于与科学记数法 kableExtra table R markdown html 结合时,十进制后的数字不一致的主要内容,如果未能解决你的问题,请参考以下文章