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

dmv*_*nna 0 for-loop r

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

> for (i in 1:5) print(i+1)
[1] 2
[1] 3
[1] 4
[1] 5
[1] 6
Run Code Online (Sandbox Code Playgroud)

没有'print'的相同表达式什么都不返回,这似乎很奇怪

> for (i in 1:5) i+1
>
Run Code Online (Sandbox Code Playgroud)

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

mne*_*nel 6

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

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

来自?`for`价值部分

for,while和repeat无形地返回NULL.for sets var to seq的最后一个使用元素,如果长度为零则为NULL.

print 将结果打印到控制台.

for(i in 1:5) i + 1
Run Code Online (Sandbox Code Playgroud)

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

如果你想分配一些东西,然后使用<-,或不太合适assign


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

results <- sapply(1:5, function(i) { i + 1})
Run Code Online (Sandbox Code Playgroud)