将基于字符的科学计数法转换为数字并在R中保留科学计数法。

3

我有一个字符值:

 val <- "1e-14105"

我希望将它们转换为数字并保留科学计数法。因此,结果仅为1e-14105

我尝试了以下方法但失败了:

> as.numeric(val)
[1] 0
> format(as.numeric(val), scientific=TRUE)
[1] "0e+00"

怎样才是正确的做法?

1个回答

3
问题在于浮点数问题和R工作的精度级别。它将1e-14105转换为数字,只是将其近似为零。请参见R地狱:第1圈,陷入浮点数陷阱
> as.numeric("1e-14105")
[1] 0
> class(as.numeric("1e-14105"))
[1] "numeric"
> 1e-14105
[1] 0

1
那么没有办法保留 1e-14105 的科学计数法格式吗? - littleworth
2
@qqq - 或许可以考虑一下这里提到的处理非常小或非常大数字的包 - https://dev59.com/i2025IYBdhLWcg3wyJCV - thelatemail

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