将循环结果附加到数字向量中

时间:2012-11-09 00:59:16

标签: r for-loop

我想创建一个带有循环结果的数字向量,例如

> for (i in 1:5) print(i+1)
[1] 2
[1] 3
[1] 4
[1] 5
[1] 6

没有'print'的相同表达式什么都不返回

,这似乎很奇怪
> for (i in 1:5) i+1
>

有没有人有解释/解决方案?

2 个答案:

答案 0 :(得分:6)

这是标准行为 - 当您说要创建数字向量时,  print不会那样做

for循环中的表达式是原始函数for

的参数

来自值部分的?`for`

  

for,while和repeat无形地返回NULL。 for sets var to last   使用seq的元素,如果长度为零则为NULL。

print将结果打印到控制台。

for(i in 1:5) i + 1

仅为每次迭代计算i + 1并且不返回任何内容

如果您要分配内容,请使用<-分配,或者不太明确assign


您可以使用sapply来避免显式循环。这(应该)避免增长载体的任何陷阱

results <- sapply(1:5, function(i) { i + 1})

答案 1 :(得分:1)

坦率地说,必须有比这更好的解决方案

loopee <- function(x){
  res <- vector(mode = "numeric", length(x))
  for (i in 1:x) {res[i] <- i+1}
  return(res)}

> loopee(5)
[1] 2 3 4 5 6