You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言for循环遍历动态扩容vector/list仅迭代1次的解决方法

问题原因

R的for循环启动时会一次性求值确定要迭代的完整序列,你在循环内部修改random_number不会改变已经生成的迭代列表,你初始的random_number长度为1,因此循环只会执行1次。

不用while循环的实现方案

你可以改成按索引迭代,同时给for循环设置一个足够覆盖预期场景的迭代上限,在循环内部判断索引是否超过当前random_number的实际长度,超过就主动终止循环即可:

steps <- 1
random_number <- c(sample(20, 1))
# 迭代上限可根据需求调整,只要远大于预期最大步数即可
for (i in 1:10000) {
  # 索引超过当前向量实际长度时终止循环
  if (i > length(random_number)) {
    break
  }
  item <- random_number[i]
  if(item < 18){
    random_number <- c(random_number, sample(20, 1))
    steps <- steps + 1
  }
}
print(paste0("It took ", steps, " steps."))

内容的提问来源于stack exchange,提问作者Mohsen_Fatemi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 07:24:03