请帮忙! 我有w:
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]}
是否可以不使用循环语句?
谢谢!
答案 0 :(得分: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]
为零,或者如果它不为零而您想要使用实际值(您的代码忽略y[1]
)。