获得矢量的差异向量

时间:2014-03-06 10:01:48

标签: r vector

假设我有一个长度为v的向量n;我希望创建一个长度为新的向量,在第一个NA单元格中包含k,在单元格编号m中包含差异v[m]-v[m-k]

我可以创建一个完成该任务的for循环:

diffs <- rep(NA, length(v))
for (i in k+1:length(diffs)) {
    diffs[i] <- v[i] - v[i-k]
}

但是我听说R中的循环很慢,而且看起来有点麻烦。

实际上,我的目标是创建一个diff矢量列表而不是一个 - 在某个范围内每个k一个。循环是唯一的解决方案吗?

实施例

在输入v <- 1:5k=2上我希望输出[1] NA NA 2 2 2(但是,事实证明,上面我的代码段的输出是[1] NA NA 2 2 2 NA NA .. 。)

1 个答案:

答案 0 :(得分:3)

?DIFF

vec <- data.frame(v=c(1,3,5,15,21))
vec$dif <- c(NA, diff(vec$v, lag = 1, differences = 1))

> vec
   v dif
1  1  NA
2  3   2
3  5   2
4 15  10
5 21   6

对于其他滞后间隔或差异幅度,相应地更改滞后和差异参数