2016-07-21 14 views
-2

助けてください! は、私はワットがありますR:自身への列参照

x y 
0 0 
0 0 
0 0 
0 1 
0 0 
0 0 
0 -1 
0 0 
0 0 
0 1 
0 0 
0 -1 
0 0 
0 0 

を私が取得したいと思います:

x y 
0 0 
0 0 
0 0 
1 1 
1 0 
1 0 
0 -1 
0 0 
0 0 
1 1 
1 0 
0 -1 
0 0 
0 0 

私はRを使用します。

for (i in 2:length(w$x)) { w$x[i] = w$x[i-1] + w$y[i]} 

は、ループ文を使用せずに行うことが可能ですか?

ありがとうございました!

答えて

4

これは、あなたがx列に0の初期値で開始することを前提としています

transform(w, x = cumsum(y)) 
## x y 
## 1 0 0 
## 2 0 0 
## 3 0 0 
## 4 1 1 
## 5 1 0 
## 6 1 0 
## 7 0 -1 
## 8 0 0 
## 9 0 0 
## 10 1 1 
## 11 1 0 
## 12 0 -1 
## 13 0 0 
## 14 0 0 

そうでなければ、あなたが初期値含めることができます。ここでの結果は同じである

transform(w, x = x[1] + cumsum(y)) 

を。 これらのどちらも、y[1]が0であるか、または0以外の場合(コードではy[1]を無視します)、実際の値を使用すると仮定します。

+0

または 'cbind(cumsum(y)、y)' – 989

+0

ありがとうございました!!! – Anatolye

関連する問題