0

我的问题来自我想要以不同方式格式化的列。我希望所有列上的小数点之外的位数相同,但在最后一列中,我希望科学记数法显示非常小的数字的 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

4

2 回答 2

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
于 2018-04-26T18:37:10.673 回答
0

使用我的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。

于 2018-04-27T11:08:42.910 回答