我想创建一个带有循环结果的数字向量,例如
> 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
>
有人有解释/解决方案吗?
这是标准行为——当你说你想创建一个数字向量时,
print
不会那样做
for 循环中的表达式是原始函数的参数for
从?`for`
价值部分
for、while 和 repeat 不可见地返回 NULL。for 将 var 设置为 seq 的最后使用的元素,如果长度为零,则设置为 NULL。
print
将结果打印到控制台。
for(i in 1:5) i + 1
只计算i + 1
每次迭代并且不返回任何内容
如果你想分配一些东西,那么使用<-
, 或者不太可取的方式分配它assign
您可以通过使用来避免显式循环sapply
。这(应该)避免增长向量的任何陷阱
results <- sapply(1:5, function(i) { i + 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