R 基于新创建列的先前值填充新列

R 基于新创建列的先前值填充新列,r,dplyr,lag,R,Dplyr,Lag,我有一个包含两列的现有数据框。我想根据这些规范创建第三列: s的当前值=s的先前值+[先前的s值*当前的X2值] 我已经设法得到了一些这样的计算,作为测试,它基于其他两列填充s。当然,这不会根据其自身的先验值进行计算 library(dplyr) set.seed(123) a <- data.frame(replicate(2,sample(1:10,10,rep = TRUE))) a %>% mutate(s = lag(X1, default = 1) +lag(X1, de

我有一个包含两列的现有数据框。我想根据这些规范创建第三列:

s的当前值=s的先前值+[先前的s值*当前的X2值]

我已经设法得到了一些这样的计算,作为测试,它基于其他两列填充s。当然,这不会根据其自身的先验值进行计算

library(dplyr)
set.seed(123)
a <- data.frame(replicate(2,sample(1:10,10,rep = TRUE)))
a %>% mutate(s = lag(X1, default = 1) +lag(X1, default = 1) * X2)

   X1 X2   s
1   3 10  11
2   8  5  18
3   5  7  64
4   9  6  35
5  10  2  27
6   1  9 100
7   6  3   4
8   9  1  12
9   6  4  45
10  5 10  66
库(dplyr)
种子集(123)
变异百分比(s=滞后(X1,默认值=1)+滞后(X1,默认值=1)*X2)
x1x2s
1   3 10  11
2   8  5  18
3   5  7  64
4   9  6  35
5  10  2  27
6   1  9 100
7   6  3   4
8   9  1  12
9   6  4  45
10  5 10  66
理想情况下,我需要这样的东西:

library(dplyr)
set.seed(123)
a <- data.frame(replicate(2,sample(1:10,10,rep = TRUE)))
a %>% mutate(s = lag(s, default = 1) +lag(s, default = 1) * X2)

   X1 X2   s
1   3 10  11
2   8  5  66
3   5  7  528
4   9  6  3696
库(dplyr)
种子集(123)
a%变异(s=滞后(s,默认值=1)+滞后(s,默认值=1)*X2)
x1x2s
1   3 10  11
2   8  5  66
3   5  7  528
4   9  6  3696
但这会导致一个问题,因为s没有定义

任何建议都将不胜感激

问候,,
Aksel

现在使用
进行
循环还不错

a$s <- 0
for (i in 1:nrow(a)) {
  if (i == 1) 
    a$s[i] = a$X2[i] + 1
  else
    a$s[i] = a$s[i-1] + (a$s[i-1] * a$X2[i])
}


a
#   X1 X2        s
#1   3 10       11
#2   8  5       66
#3   5  7      528
#4   9  6     3696
#5  10  2    11088
#6   1  9   110880
#7   6  3   443520
#8   9  1   887040
#9   6  4  4435200
#10  5 10 48787200
a$s