从while循环返回对象

时间:2012-06-24 17:34:50

标签: r while-loop

更新见下文

我不知道如果没有用于索引的计数器/迭代器,如何用while循环中的元素填充列表或向量。见下面的最小例子。我有一个更复杂的while循环,就像下面的foo一样,它有一个不包含数字的逻辑语句,因此我不清楚如何使用x填充列表vec。是否可以在while循环中创建某种迭代器,这样每次遍历while循环时,迭代器只会增加1?然后我可以使用这个迭代器来索引列表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()

1 个答案:

答案 0 :(得分:1)

使用构建自己的迭代器的方法非常简单。下面是一些示例代码,用于打印数字1到10,这可能是完成此任务的最少R方式:

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

正如你所看到的,它与你描述的非常相似。你只需增加循环顶部的迭代器即可。