【发布时间】:2015-12-07 04:16:06
【问题描述】:
我一直在尝试编写while 命令来在循环生成的一个值超过另一个值时停止循环函数。但是,我没有找到正确的方法。
for 循环运行 30 天,但我希望它在parasite_l.A 的最后一个值小于parasite_l.B 时立即停止。
我已经包含了用于生成数据和 for 循环的工作代码。
对循环没有限制的替代解决方案也将不胜感激。
# Subject A, initially 400 parasites, growing by 10 %
subA = 400
infA = 1.1
# Subject B, initially 120 parasites, growing by 20 %
subB = 120
infB = 1.2
# How many days to model
days = 30
days_seq = seq(1, days, 1)
# Parasite load for A
parasite_l.A = rep(NA, days)
parasite_l.A[1] = subA
# Parasite load for B
parasite_l.B = rep(NA, days)
parasite_l.B[1] = subB
# Loop for subject A and B
for(i in 1:(days)){
parasite_l.A[i+1] = parasite_l.A[i]*(infA)
parasite_l.B[i+1] = parasite_l.B[i]*(infB)
}
parasite_l.A
parasite_l.B
【问题讨论】:
-
“for 循环运行 30 天” - 与现有的 for 循环相比,可能值得考虑一种不同的、更有效的方法。顺便说一句
-
附带说明,
parasite_l.A可以用subA * (infA ^ (0:days))创建;虽然在这种情况下,许多不需要的值将被计算出来,因为在计算之前不能有“中断”条件。 -
感谢@alexis_laz 的替代方案!这对于在时间跨度内生成我想要的值要高效得多。
-
您说,“for 循环运行了 30 天,但我希望它在 parasite_l.A 的最后一个值大于 parasite_l.B. 时立即停止”。但是您的意思是“小于”,否则该函数将在第一个值处停止。 A = 400; B = 120
-
@PierreLafortune。感谢您发现错误。我会解决的。
标签: r loops while-loop