【发布时间】:2015-11-12 07:18:59
【问题描述】:
我遇到了麻烦
set.seed(1)
sum(abs(rnorm(100)))
set.seed(1)
cumsum(abs(rnorm(100)))
为什么和的值与累积和的最后一个值不同,累积和保留所有小数位并且总和舍入一位数字。
【问题讨论】:
标签: r
我遇到了麻烦
set.seed(1)
sum(abs(rnorm(100)))
set.seed(1)
cumsum(abs(rnorm(100)))
为什么和的值与累积和的最后一个值不同,累积和保留所有小数位并且总和舍入一位数字。
【问题讨论】:
标签: r
这是 R 打印原子向量方式的结果。
您可能已经将默认数字选项设置为 7,任何介于 -1 和 1 之间的值都将打印 7 个小数位。由于 R 打印原子向量的方式,向量中的所有其他值也将有七个小数位。此外,数字选项设置为 7 的 .6264538 值必须以八位数字 (0.6264538) 打印,因为它必须有前导零。 rnorm() 向量中有两个这样的值。
如果你单独看cumsum(abs(rnorm(100)))[100],你会发现差异(实际上它与sum(abs(rnorm(100)))的打印值相同,尽管不是完全相同的值)。
sum(abs(rnorm(100)))
# [1] 71.67207
cumsum(abs(rnorm(100)))[100]
# [1] 71.67207
请注意,这两个值都有七位数字。大概我能想到的最基本的例子如下
0.123456789
#[1] 0.1234568
1.123456789
#[1] 1.123457
11.123456789
# [1] 11.12346
## and so on ...
【讨论】:
还请注意,这实际上是关于如何打印即呈现值。这不会改变值本身,例如...
set.seed(1)
d1 <- sum(abs(rnorm(100)))
set.seed(1)
d2 <- cumsum(abs(rnorm(100)))
(d1 == d2)[100]
## [1] TRUE
【讨论】: