我对 R 非常熟悉,因为我已经使用它几年了。不幸的是,我不太擅长创建涉及循环或重复方程的函数。问题如下:
我有一个包含 1000 多个值的向量。我想从该向量的一个子集计算两个大小相等的并置均值之间的绝对差异。
这是一个例子。
我有长度为 8 的向量 (vec)
[1] 0.12472963 1.15341289 -1.09662288 -0.73241639 0.06437658 -0.13647136 -1.52592048 1.46450084
我想计算前 2 个值 (0.12472963, 1.15341289) 的平均值,并获得与以下 2 个值 (-1.09662288 -0.73241639) 平均值的绝对差,然后沿着向量向下工作。
在这种情况下,我可以轻松使用以下等式:
abs(mean(vec[1:2])-mean(vec[3:4]))
并将每个数字递增 1,以便手动向下工作,直到向量结束。我将获得以下向量。
[1] 1.553591 0.3624149 0.8784722 0.497176 0.005337574
然而,我想要的是一个自动化的例程,它使我能够在长向量上做到这一点,并改变从中计算平均值的值的数量。
在我看来应该比较简单,但我不知道从哪里开始。
最佳答案
使用 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
关于重复或循环参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26513122/