强制 R 输出为最多两位小数的科学计数法
Posted
技术标签:
【中文标题】强制 R 输出为最多两位小数的科学计数法【英文标题】:Forcing R output to be scientific notation with at most two decimals 【发布时间】:2016-09-21 18:07:09 【问题描述】:我希望为特定的 R 脚本提供一致的输出。在这种情况下,我希望所有数字输出都采用科学计数法,精确到小数点后两位。
例子:
0.05 --> 5.00e-02
0.05671 --> 5.67e-02
0.000000027 --> 2.70e-08
我尝试使用以下选项:
options(scipen = 1)
options(digits = 2)
这给了我结果:
0.05 --> 0.05
0.05671 --> 0.057
0.000000027 --> 2.7e-08
我尝试时得到了相同的结果:
options(scipen = 0)
options(digits = 2)
感谢您的任何建议。
【问题讨论】:
你快到了:options(digits = 3, scipen = -2)
。我删除了这个作为答案,因为我不知道你是否有很大的数字——这不会起作用。如果其他人知道一种真正全面的方法来跨数字类型执行此操作会更好,但在紧要关头,如果您只有少量数字,则可以这样做。
【参考方案1】:
我认为最好使用formatC
而不是更改全局设置。
对于您的情况,可能是:
numb <- c(0.05, 0.05671, 0.000000027)
formatC(numb, format = "e", digits = 2)
产量:
[1] "5.00e-02" "5.67e-02" "2.70e-08"
【讨论】:
【参考方案2】:另一种选择是使用scales
库中的scientific
。
library(scales)
numb <- c(0.05, 0.05671, 0.000000027)
# digits = 3 is the default but I am setting it here to be explicit,
# and draw attention to the fact this is different than the formatC
# solution.
scientific(numb, digits = 3)
## [1] "5.00e-02" "5.67e-02" "2.70e-08"
注意,digits
设置为 3,而不是像 formatC
那样设置为 2
【讨论】:
以上是关于强制 R 输出为最多两位小数的科学计数法的主要内容,如果未能解决你的问题,请参考以下文章
BigDecimal的用法详解(保留两位小数,四舍五入,数字格式化,科学计数法转数字,数字里的逗号处理)
BigDecimal的用法详解(保留两位小数,四舍五入,数字格式化,科学计数法转数字,数字里的逗号处理)