我对R很熟悉,因为我已经使用它几年了.不幸的是,我不太精通创建涉及循环或重复方程的函数.问题如下:
我有一个包含超过1000个值的向量.我想计算两个相等大小的并置方法与该向量的子集之间的绝对差值.
这是一个例子.
我有长度为8的向量(vec)
[1] 0.12472963 1.15341289 -1.09662288 -0.73241639 0.06437658 -0.13647136 -1.52592048 1.46450084
Run Code Online (Sandbox Code Playgroud)
我想计算前2个值的平均值(0.12472963,1.15341289)并获得与以下2个值(-1.09662288 -0.73241639)的平均值的绝对差值,然后沿着向量工作.
在这种情况下,我可以轻松使用以下等式:
abs(mean(vec[1:2])-mean(vec[3:4]))
Run Code Online (Sandbox Code Playgroud)
并逐步增加每个数字1,以便手动向下工作直到向量结束.我会得到以下矢量.
[1] 1.553591 0.3624149 0.8784722 0.497176 0.005337574
Run Code Online (Sandbox Code Playgroud)
然而,我希望有一个自动例程,使我可以在长向量上执行此操作并更改用于计算均值的值的数量.
在我看来它应该相对简单,但我不知道从哪里开始.
用途filter:
c(abs(filter(vec, c(0.5, 0.5, -0.5, -0.5), sides=1)[-(1:3)]))
#[1] 1.55359090 0.36241491 0.87847224 0.49717601 0.00533757
Run Code Online (Sandbox Code Playgroud)