1

更新见下文

当没有计数器/迭代器可供索引时,我不确定如何在 while 循环中使用元素填充列表或向量。请参阅下面的最小示例。我有一个更复杂的 while 循环,就像下面的 foo 一样,它有一个不包含数字的逻辑语句,所以我不清楚如何用 x 填充列表 vec。是否可以在 while 循环中创建某种迭代器,以便每次通过 while 循环时迭代器都会简单地增加一?然后我可以使用这个迭代器来索引列表 vec?

foo <- function(){
  names <- list("a","b","c")
  vec <- list()
  more <- TRUE
  while(more == TRUE){
   names <- rep(names, 2)
   if(length(names) < 50) vec <- names
   more <- length(names) < 50
   }
  vec
}

foo()

谢谢,这似乎像我现在想要的那样工作:

foo <- function(){
  names <- list("a","b","c")
  i <- 0
  vec <- list()
  more <- TRUE
  while(more == TRUE){
    i <- i + 1
    names <- rep(names, 2)
    if(length(names) < 50) vec[[i]] <- names
    more <- length(names) < 50
  }
 vec
}

foo()
4

1 回答 1

1

使用构建自己的迭代器的方法非常容易。下面是一些示例代码,它以最不类似于 R 的方式打印数字 1 到 10 来完成此任务:

i <- 0
more <- TRUE
while(more == TRUE){
    i <- i + 1
    print(i)
    if(i == 10){
        more <- FALSE
    }
}

如您所见,它几乎与您描述的完全一样。您只需在循环顶部增加迭代器。

于 2012-06-24T17:39:07.560 回答