循环函数在R中返回什么值

时间:2016-02-26 09:46:33

标签: r

我正在阅读R语言手册,并想知道循环函数返回的值。 Manuall在3.3.2循环中说:

  

三个语句[for,while,repeat]中的每一个都返回已评估的最后一个语句的值。   ...   <循环语句返回的值始终为NULL,并以无形方式返回。

那么返回什么值,NULL或循环中评估的最后一个语句的值?

此致 奥利弗

1 个答案:

答案 0 :(得分:8)

你在谈论这个:https://cran.r-project.org/doc/manuals/r-release/R-lang.html#Looping

x = for(i in 1:10){ i }
i
#[1] 10
x
#NULL
x <- while(i < 20){ i=i+1 }
i
#[1] 20
x
#NULL
x <- repeat { if(i>=30){break}; i=i+1 }
i
#[1] 30
x
#NULL

非常肯定是NULL。

我检查了文档的旧版本。语句“循环语句语句返回的值总是@code {NULL} 无形地返回。“首先出现在R3.0.0中(它不存在于2.9.0中)。看起来行为有所改变,文档可能没有被充分清理。

jicawi@JimisPC:~$ diff R-lang.2.9.0.texi R-lang.3.0.0.texi > R-lang.diff
jicawi@JimisPC:~$ grep -n NULL R-lang.diff 
82:> The value returned by a loop statement statement is always @code{NULL}
...

所以,我安装了R 2.9.0并运行了同样的事情:

x = for(i in 1:10){ i }
x
#[1] 10
x <- while(i < 20){ i=i+1 }
x
#[1] 20
x <- repeat { if(i>=30){break}; i=i+1 }
x
#[1] 30

绝对是最后一句话:)

提交错误报告:https://bugs.r-project.org/bugzilla/show_bug.cgi?id=16729

  • 更新:错误已确认,修复并报告状态现已关闭:已修复。

好好发现!