我怎样才能为" n"执行此列减法R中的列?

时间:2015-08-22 01:39:53

标签: r

我正在尝试为" n"改进以下代码列和我到目前为止没有骰子。

A = runif(1000, -2, 2)
B = data.frame(A, runif(1000, -0.5, 0.5), runif(1000, -0.25, 0.25), runif(1000, -0.1, 0.1), ...)
X[, 1] = B[, 1] - B[, 2]     #   << I am stuck in this steps
X[, 2] = X[, 1] - B[, 3]     #   << I am stuck in this steps
X[, 3] = X[, 2] - B[, 4]     #   << I am stuck in this steps
...
...
...
X[, n] = X[, n-1] - B[, n+1] #   << I am stuck in this steps
W = data.frame(B[, 1], X[,1], ... , X[,n]) 
plot.ts(W, plot.type="multiple")

我已经尝试使用&#34; for循环&#34;但是R不理解&#34; n-1&#34;和&#34; n + 1&#34;索引增量。

1 个答案:

答案 0 :(得分:3)

您可以使用Reduceaccumulate=TRUE按顺序将函数应用于数据框的每一列,从而累积结果。在这种情况下,您希望对每对列应用减法。

setNames(data.frame(Reduce("-", dat, accumulate=TRUE)), names(dat))
#   x  y   z
# 1 1 -1  -1
# 2 2 -1  -6
# 3 3 -1 -11

数据:

(dat = data.frame(x=1:3, y=2:4, z=c(0, 5, 10)))
#   x y  z
# 1 1 2  0
# 2 2 3  5
# 3 3 4 10