1

使用以下代码:

a <- seq(1, 10, 1)
b <- seq(2, 20, 2)

我想a[i - 1]b[i]for each中减去i,以获得类似的东西

c <- NULL
for(i in 1:length(b)) {
   c[i] <- b[i] - a[i - 1]
}

但我想在使用for()循环的情况下做到这一点。

任何人都知道如何在一个命令行中做到这一点?

4

2 回答 2

2

由于你的ab长度相同,我假设你想先修剪最后一个元素b。(试着b - a[-1]看看为什么这可能是可取的。)

b[-length(b)] - a[-1]
# [1] 0 1 2 3 4 5 6 7 8
于 2012-09-10T15:29:48.163 回答
0

您可以使用时间序列执行此操作:

 a <- ts(seq(1, 10, 1))
 b <- ts(seq(2, 20, 2))
 b- lag(a,1) 
##-----
Time Series:
Start = 1 
End = 9 
Frequency = 1 
[1] 0 1 2 3 4 5 6 7 8

并不是说我一定要推荐这个。基本时间序列形式主义是一个广为担心的混乱来源。大多数人避免它,优先考虑 zoo 和 xts 类对象。

于 2012-09-10T17:10:09.400 回答