【问题标题】:Iteratively add to sequence in for loop R在for循环R中迭代地添加到序列
【发布时间】:2021-08-26 10:13:26
【问题描述】:

我想迭代地将元素添加到我循环的列表中:

list = as.list(c(1,2,3))
list
for (x in list) {
  new_element = as.list(x^2)
  print(new_element)
  list = union(list, new_element)
}
list

但是,R 只采用循环中的原始 3 个元素。 我希望循环继续使用新元素。关于如何调整代码的任何想法?谢谢!

【问题讨论】:

  • 不清楚预期的输出是什么。您是否要进行无限循环?
  • 你的循环应该一直持续到什么时候?
  • 抱歉,不清楚。这只是一个示例,确实会导致无限循环。就我而言,它将有一个自然的结局,因为没有更多的元素要添加。我正在从数据源中抓取个人,并且还想抓取在个人的 json 中链接的所有兄弟姐妹(我的原始列表)。- 现在清楚了吗?
  • 如果你有类似if(x < 10){...} 这样的循环体,以及明确的预期输出 ((1,2,3,4,9,16,81) ?)

标签: r for-loop


【解决方案1】:

使用while 循环而不是for 循环,与break 一起最终终止:

mylist = as.list(c(1,2,3))
i <- 1
while(TRUE){
  x <- mylist[[i]]
  if(x<10){
    new_element <- as.list(x^2)
    print(new_element)
    mylist = union(mylist, new_element)
    i <- i+1
  } else {
    break
  }
}

这会导致mylist 在循环终止时有 7 个项目(分别包含 1、2、3、4、9、16、81 的列表)。

【讨论】:

  • 太好了,非常感谢!我没有考虑过while循环(我对R很陌生)并且使用列表的索引很聪明!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-20
  • 1970-01-01
  • 1970-01-01
  • 2021-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多