以科学记数法格式化打印小数字以使用相同的幂

问题描述 投票:0回答:1

我的数据框中有一列包含:

dat <- c(1.664140e-07, 2.988795e-07, 3.501572e-07, -3.790459e-07, 1.839657e-07, -3.303678e-08, 1.232856e-07, 3.652545e-07, -4.180682e-09, 6.088182e-08, 1.542207e-07, 1.015173e-07, 4.423879e-07, 1.729282e-07, 8.462837e-08, 2.670472e-07, 3.364679e-07, 2.827205e-07)

我想将其格式化以便在报告中打印。 当我使用时:

formated <- format(dat, digits = 4, scientific = TRUE, nsmall = 4)

我有:

[1] " 1.664e-07" " 2.989e-07" " 3.502e-07" "-3.790e-07" " 1.840e-07" "-3.304e-08" " 1.233e-07" " 3.653e-07" "-4.181e-09" " 6.088e-08"
[11] " 1.542e-07" " 1.015e-07" " 4.424e-07" " 1.729e-07" " 8.463e-08" " 2.670e-07" " 3.365e-07" " 2.827e-07"

为了与具有情人方差的其他表保持一致(相同的幂-07),我需要一种方法来格式化它,如下所示:

[1] " 1.664e-07" " 2.989e-07" " 3.502e-07" "-3.790e-07" " 1.840e-07" **"-0.330e-07"** " 1.233e-07" " 3.653e-07" **"-0.041e-07"** **" 0.608e-07"**
[11] " 1.542e-07" " 1.015e-07" " 4.424e-07" " 1.729e-07" **"0.846e-07"** " 2.670e-07" " 3.365e-07" " 2.827e-07"

是的。我知道这不是一个正确的科学记数法。但对于观众来说,该报告的目的是更清楚地看到这个系列与其他三个系列之间的区别。

我最好使用 gt 包,但我在这件事上很灵活。

r r-markdown quarto gt
1个回答
0
投票

这是一些快速的事情:

foo <- function(x) sprintf("%.3fe-07", x * 1e7)
foo(dat)
#  [1] "1.664e-07"  "2.989e-07"  "3.502e-07"  "-3.790e-07" "1.840e-07"  "-0.330e-07" "1.233e-07" 
#  [8] "3.653e-07"  "-0.042e-07" "0.609e-07"  "1.542e-07"  "1.015e-07"  "4.424e-07"  "1.729e-07" 
# [15] "0.846e-07"  "2.670e-07"  "3.365e-07"  "2.827e-07" 
© www.soinside.com 2019 - 2024. All rights reserved.