如何在R中用科学记数法写数字

时间:2017-01-06 08:13:14

标签: r xtable

我想知道是否有办法在5.23x10-4中以科学记数法(R)写出0.000523。我使用xtable命令将表写入latex

2 个答案:

答案 0 :(得分:4)

您可以像这样使用sprintf

x <- c(0.000523, -523)

sprintf("%.2fx10^{%d}", 
        x/10^floor(log10(abs(x))), 
        floor(log10(abs(x))))
#[1] "5.23x10^{-4}" "-5.23x10^{2}"

您需要编写一些ifelse条件,以根据小数范围设置不同的格式。

答案 1 :(得分:2)

xtable包提供了可以执行此操作的函数sanitize.numbers()。它适用于角色,因此您首先必须使用format()将数字转换为字符:

library(xtable)
sanitize.numbers(format(0.000523, scientific = TRUE),
                 type = "latex", math.style.exponents = TRUE)
## [1] "$5.23 \\times 10^{-4}$"

正如您所注意到的,这不会给出5.23x10^-4,而是等同于LaTeX表示法中的这个表达式,这可能不是您所需要的。