我正在处理非常精确的数字(最大位数)。
我注意到write.csv(x)
在 R 中有时会对数字进行四舍五入。
有人注意到类似的事情吗?
默认保存的位数是多少?
正如文档中所写,
在几乎所有情况下,数值量的转换都是受控制的
通过选项“scipen
" (see options
),但具有内部等价物
的digits = 15
。为了更精细地控制,请使用format
制作一个角色
矩阵/数据框,并调用write.table
关于这一点。
所以简单的解决方案就是改变options
, i.e.
options(digits = DESIRED_VALUE)
定制的解决方案是将变量转换为字符类型format
, e.g.
dat <- mtcars
dat$wt <- format(dat$wt, digits = 20)
并像这样保存。但请注意,当我们使用计算机时always处理四舍五入的数字(参见Gldberg,1991,每个计算机科学家都应该了解的浮点运算知识 https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html),并且您可能会发现对计算机精度有影响的棘手结果,例如
format(2.620, digits = 20)
## [1] "2.6200000000000001066"
因此,四舍五入值并没有什么“坏处”,因为您可能只需要它们精确到一定的小数位数。此外,您的测量也会受到测量误差的影响,因此精度可能是虚幻的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)