如何在 ASCII 表中以科学计数法显示数字?
How to display numbers in scientific notation in ASCII tables?
我试图在 ASCII table 中显示极小的数字 (<1E-12)。 (相信我,我找不到任何替代方案。)到目前为止,我已经尝试过 stargazer 和 xtable。他们似乎都不起作用。我可以用 HTML 中的 xtable 以科学记数法显示数字,但不能显示 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)
即使我将数字选项设置为 NA,所有值都被截断为 0,这应该保留所有内容。非常感谢任何帮助!谢谢!
您可以将值转换为字符。我使用 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")
看来您愿意接受作为字符的输出(至少如果我正确解释了您对 "ASCII" 的使用)。也可以使用接受类似 Fortran 规范的 sprintf
:
> 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
我试图在 ASCII table 中显示极小的数字 (<1E-12)。 (相信我,我找不到任何替代方案。)到目前为止,我已经尝试过 stargazer 和 xtable。他们似乎都不起作用。我可以用 HTML 中的 xtable 以科学记数法显示数字,但不能显示 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)
即使我将数字选项设置为 NA,所有值都被截断为 0,这应该保留所有内容。非常感谢任何帮助!谢谢!
您可以将值转换为字符。我使用 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")
看来您愿意接受作为字符的输出(至少如果我正确解释了您对 "ASCII" 的使用)。也可以使用接受类似 Fortran 规范的 sprintf
:
> 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