在诺曼·马特洛夫(Norman Matloff)的《 R编程的艺术》的第 307 页中,作者说
for()实际上是一个功能。
上下文是对一段代码片段的说明
for (i in 1:length(x)) z[i] <- x[i] + y[i]
Run Code Online (Sandbox Code Playgroud)
作者评论
尽管从语法上看,循环看起来是无害的,但
for()实际上是一个函数。
我的理解是他在说的for()是一个函数,就像+一个函数(可调用对象)一样。假设我们可以+通过标准的函数调用方式进行调用,例如
"+"(3 ,5) # 8
Run Code Online (Sandbox Code Playgroud)
我有C / C ++和Python的背景知识,并且注意到两种语言之间的细微差别。例如,
return是R中的一个函数,而不是一个语句,因此我们必须return(1)在括号中编写。回到我的问题:forR中是否有函数?
感谢您的澄清。
for是一个函数,但该符号for也被解析器识别为我们可以用来调用该函数的便捷语法的一部分for。这是两个不同的东西,方便地命名为相同(请注意,这in不是一个函数)。
is.function(`for`)
#> [1] TRUE
x <- y <- z <- 1:3
for (i in 1:length(x)) z[i] <- x[i] + y[i]
z
#> [1] 2 4 6
x <- y <- z <- 1:3
`for`(i, 1:length(x), z[i] <- x[i] + y[i])
z
#> [1] 2 4 6
Run Code Online (Sandbox Code Playgroud)
由reprex 包(v0.2.1)于 2019-05-19 创建
以类似的方式,if (cond) foo else bar语法映射到函数调用`if`(cond, foo, bar),但没有else函数。
所有其他控制流构造(请参阅参考资料?Control)也是函数。
| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |