gpt4 book ai didi

r - cumsum 与 r 中的 diff 相反

转载 作者:行者123 更新时间:2023-12-04 11:54:35 25 4
gpt4 key购买 nike

我有一个问题,我不确定我是否在这里完全愚蠢,或者这是否是一个真正的问题,或者我是否误解了这些功能的作用。

diff 的反义词和 cumsum 一样吗?我以为是。但是,使用此示例:

dd <- c(17.32571,17.02498,16.71613,16.40615,
16.10242,15.78516,15.47813,15.19073,
14.95551,14.77397)
par(mfrow = c(1,2))
plot(dd)
plot(cumsum(diff(dd)))

> dd
[1] 17.32571 17.02498 16.71613 16.40615 16.10242 15.78516 15.47813 15.19073 14.95551
[10] 14.77397
> cumsum(diff(dd))
[1] -0.30073 -0.60958 -0.91956 -1.22329 -1.54055 -1.84758 -2.13498 -2.37020 -2.55174

这些不太一样。我哪里错了?

啊!星期五。

明显地

最佳答案

功能大不相同:diff(x)返回长度为 (length(x)-1) 的向量它包含向量中一个元素和下一个元素之间的差异 x , 而 cumsum(x)返回长度等于 x 长度的向量包含 x 中元素的总和

例子:

x <- c(1:10)
#[1] 1 2 3 4 5 6 7 8 9 10
> diff(x)
#[1] 1 1 1 1 1 1 1 1 1
v <- cumsum(x)
> v
#[1] 1 3 6 10 15 21 28 36 45 55

函数 cumsum()是累积和,因此是向量的条目 v[i]它返回的是 x 中所有元素的结果之间 x[1]x[i] .相比之下, diff(x)只取一个元素之间的差异 x[i]接下来, x[i+1] .
cumsum的组合和 diff导致不同的结果,这取决于函数的执行顺序:
> cumsum(diff(x))
# 1 2 3 4 5 6 7 8 9

这里的结果是九个“1”序列的累积和。请注意,如果将此结果与原始向量 x 进行比较, 最后一个条目 10不见了。

另一方面,通过计算
> diff(cumsum(x))
# 2 3 4 5 6 7 8 9 10

得到一个再次与原始向量相似的向量 x , 但现在第一个条目 1不见了。

在任何情况下都没有恢复原始向量,因此不能说 cumsum()diff() 的反函数或反函数

关于r - cumsum 与 r 中的 diff 相反,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32009610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com