获得的向量的差异向量(Getting a vector of differences of a ve

2019-10-19 12:08发布

假设我有一个向量v的长度n ; 我希望创建长度的新向量,将包含NA在第一k细胞,并在细胞数m它将包含差v[m]-v[mk]

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

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

在但我听说循环R是缓慢的,它看起来有点麻烦,那样做。

其实,我的目标是创造差异向量的列表,而不是单一的一个-每个k在一定范围内。 是循环的唯一办法?

在输入v <- 1:5k=2 ,我期望的输出[1] NA NA 2 2 2 (然而,事实证明,我的片断的输出是上述[1] NA NA 2 2 2 NA NA ...)

Answer 1:

?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

对于其他的滞后间隔或相应的差异,变化滞后和差异参数大小



文章来源: Getting a vector of differences of a vector
标签: r vector