我想知道是否有办法在5.23x10-4
中以科学记数法(R
)写出0.000523。我使用xtable
命令将表写入latex
。
答案 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表示法中的这个表达式,这可能不是您所需要的。