【发布时间】:2021-12-21 05:12:42
【问题描述】:
我想为每个步骤获取新值,并在方程式中使用它们以进行进一步的步骤。通常,我可以执行循环,但对于这个问题,我也需要使用过去的值。例如,我有这样的流量数据:
q<-c(10, 15.83333, 21.66667)
我手动创建了一个循环:
z1<-190 #initial elevation
s1<-24011 #initial storage
in1<-q[1] #initial inflow
out1<-1.86*sqrt((z1-110)*19.62) #outflow
z2<- z1+0.3*((in1-out1)/s1) #elevation at second step
in2<-q[2] #second inflow
out2<-1.86*sqrt((z2-110)*19.62) #outflow at z2 elevation
ds2<-0.3*((in1+in2)/2-(out1+out2)/2) #change in storage
s2<-s1+ds2 #net storage value
z3<-z2+0.3*((in2-out2)/s2) #elevation at third step
in3<-q[3]
out3<-1.86*sqrt((z3-110)*19.62)
ds3<-0.3*((in2+in3)/2-(out2+out3)/2)
s3<-s2+ds3
.
.
.
z4<-z3+0.3*((in3-out3)/s3)
简而言之,我正在使用 in,out,s 的先前值计算 z 值。我需要找到的是考虑到q 值的z 值。
预期结果是:
z q outflows storages
[1,] 190.0000 10.00000 73.68981 24011.00
[2,] 189.9992 15.83333 73.68944 23992.77
[3,] 189.9985 21.66667 73.68911 23976.29
【问题讨论】:
-
只需更新循环内的变量。您可以在第一步启动您的 vars,它们循环
q覆盖z、q...etc vars -
但是我该如何安排 (ds2