使用以下代码:
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()
循环的情况下做到这一点。
任何人都知道如何在一个命令行中做到这一点?
使用以下代码:
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()
循环的情况下做到这一点。
任何人都知道如何在一个命令行中做到这一点?
由于你的a
和b
长度相同,我假设你想先修剪最后一个元素b
。(试着b - a[-1]
看看为什么这可能是可取的。)
b[-length(b)] - a[-1]
# [1] 0 1 2 3 4 5 6 7 8
您可以使用时间序列执行此操作:
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 类对象。