首页 > 解决方案 > 为什么在 for 循环中添加 return() 会有所不同?

问题描述

我在 R 中玩 for 循环,并将我的数据设置为x < -data.frame(rnorm(5)) 然后我正在做一个这样的 for 循环:

for (i in 1:nrow(x)){
  x$new[i] <- x$rnorm.5.[i] + 1
  return(x)
}

它返回

              rnorm.5.   new
            0.4036397   1.40364
            1.1424362   1.40364
            0.2314323   1.40364
            0.7248371   1.40364
            0.6802016   1.40364

列中的所有值都new相同。

但是,如果我删除return(x),或将其更改为print(x),它反而会给我一个不同的 df:

              rnorm.5.   new
            0.4036397   1.40364
            1.1424362   1.1424362
            0.2314323   1.2314323
            0.7248371   1.7248371
            0.6802016   1.6802016

任何想法将不胜感激!

标签: rfor-loopdataframe

解决方案


当您编写return(x)时,它会结束函数,即使它在循环内,所以循环会在此处停止并且不再循环。

当您编写print(x)时,它会打印,但函数和循环会继续进行

@Amar 提供的其他信息:

return将传递函数/循环中的任何值以供使用,同时print简单地打印到控制台。例如,如果您希望分配函数的输出以供以后使用,您可以使用return


推荐阅读