创建R循环
我试图创建一个R循环来帮助我获得Var2、Var3和Var4(参见下面的输出)。 Var1、Var5是预先输入的。 Var4是预先输入的创建R循环,r,loops,R,Loops,我试图创建一个R循环来帮助我获得Var2、Var3和Var4(参见下面的输出)。 Var1、Var5是预先输入的。 Var4是预先输入的 Var2 = lag(Var4) * Var5 Var3 = Var2 + lag(Var3) Var4 = Var1 - Var3 有什么建议吗 首先,我用初始值预先填充表格: df <- data.frame(row = 1:5, Var1 = rep(500, 5), V
Var2 = lag(Var4) * Var5
Var3 = Var2 + lag(Var3)
Var4 = Var1 - Var3
有什么建议吗
首先,我用初始值预先填充表格:
df <- data.frame(row = 1:5,
Var1 = rep(500, 5),
Var2 = c(0, rep(NA_real_, 4)),
Var3 = c(0, rep(NA_real_, 4)),
Var4 = c(500, rep(NA_real_, 4)),
Var5 = 0.1)
一个基本的解决方案
我们使用起始值预先分配df
df <- data.frame(
Var1 = rep(500, 5),
Var2 = 0,
Var3 = 0,
Var4 = 500,
Var5 = rep(0.1, 5)
)
然后,我们可以在一个for
循环中替换df
中的值
for (i in 2:nrow(df)) {
df$Var4[i] = df$Var1[i] - df$Var4[i-1] * df$Var5[i] - df$Var3[i-1]
df$Var3[i] = df$Var4[i-1] * df$Var5[i] + df$Var3[i-1]
df$Var2[i] = df$Var4[i-1] * df$Var5[i]
}
df
# Var1 Var2 Var3 Var4 Var5
#1 500 0.00 0.00 500.00 0.1
#2 500 50.00 50.00 450.00 0.1
#3 500 45.00 95.00 405.00 0.1
#4 500 40.50 135.50 364.50 0.1
#5 500 36.45 171.95 328.05 0.1
多少次?只有五次?一直到Var4的长度
Var2
的值似乎与lag(Var4)*Var5
不一致。你能再检查一下吗?此外,Var3
值由递归关系给出。在这种情况下,您需要一个起始值。起始值是多少?您声明要计算Var4
的值,但随后提到Var4
是“预输入的”。那么是哪一个呢?@ali.hash2这仍然不起作用。500作为Var3
的起始值不会给出屏幕截图中的Var3
值。另外,您还没有对Var4
进行说明。Var4
是给定的(“预先输入”)还是您正在尝试计算Var4
?对于后者,您有一个循环条件,因为Var2
依赖于Var4
,Var2
依赖于Var3
,而Var3
又依赖于Var4
。如果您回顾一下如何提供。您的数据截图不是一个好主意,因为它(1)要求我们手动转录您的数据,(2)不清楚您希望根据哪些其他数量/列生成哪些数量/列(什么是输入,什么是输出?)。
df <- data.frame(
Var1 = rep(500, 5),
Var2 = 0,
Var3 = 0,
Var4 = 500,
Var5 = rep(0.1, 5)
)
Var4[i] = Var1[i] - Var4[i-1] * Var5[i] - Var3[i-1]
Var3[i] = Var4[i-1] * Var5[i] + Var3[i-1]
Var2[i] = Var4[i-1] * Var5[i]
for (i in 2:nrow(df)) {
df$Var4[i] = df$Var1[i] - df$Var4[i-1] * df$Var5[i] - df$Var3[i-1]
df$Var3[i] = df$Var4[i-1] * df$Var5[i] + df$Var3[i-1]
df$Var2[i] = df$Var4[i-1] * df$Var5[i]
}
df
# Var1 Var2 Var3 Var4 Var5
#1 500 0.00 0.00 500.00 0.1
#2 500 50.00 50.00 450.00 0.1
#3 500 45.00 95.00 405.00 0.1
#4 500 40.50 135.50 364.50 0.1
#5 500 36.45 171.95 328.05 0.1