如何在ASCII表格中以科学计数法显示数字?

6

我正在尝试在ASCII表格中显示极小的数字(<1E-12)。 (相信我,我找不到任何替代方案。)到目前为止,我已经尝试了stargazer和xtable。 两者都似乎不起作用。 我可以使用xtable在HTML中以科学计数法显示数字,但不能在ASCII中。 Stargazer似乎没有显示数字的科学计数法选项。以下是一个示例:

library(stargazer)
example <- data.frame(parameter = letters, value = runif(26, min = 1E-14, max = 5E-14))
stargazer(example, summary = F, type = "text", digits = NA)

即使我将digits选项设置为NA(应该保留所有内容),所有的值都被截断为0。非常感谢您的帮助!谢谢!

你可以通过事先将它们转换为字符串来强制执行...虽然不太美观,但它会起作用。 - alistaire
2个回答

4

您可以将值转换为字符。我使用了format函数来完成此操作,因为这使得控制有效数字的数量变得容易。我还使用dplyr包在运行时重新格式化:

library(dplyr)

stargazer(example %>% mutate(value = format(value, scientific = TRUE, digits = 4)), 
          summary = FALSE, type = "text")
======================
   parameter   value  
----------------------
1      a     4.456e-14
2      b     2.773e-14
...
25     y     2.982e-14
26     z     1.771e-14
----------------------
您也可以像这样避免使用dplyr
example$value = format(example$value, scientific = TRUE, digits = 4)

stargazer(example, summary = FALSE, type = "text")

2

看起来您愿意接受字符输出(至少如果我正确解释了您使用的“ASCII”)。也可以使用 sprintf,它接受类似 Fortran 的规范:

> formatC(2e-14, digits=16, format="f")
[1] "0.0000000000000200"
> print( formatC(2e-14, digits=16, format="f") , quote=FALSE)
[1] 0.0000000000000200
> cat( formatC(2e-14, digits=16, format="f") )
0.0000000000000200

科学计数法:

> cat( formatC(2e-14, digits=4, format="e") )
2.0000e-14

感谢42-. 我更喜欢用科学计数法表示数字。 - Jin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接