for()
实际上是一个函数。
上下文是对一段代码片段的说明
for (i in 1:length(x)) z[i] <- x[i] + y[i]
作者评论
尽管从句法上看,循环看起来是无害的,但
for()
实际上是一个 功能。
我的理解是他在说for()
是一个函数,就像+
是一个函数(可调用对象)一样。假设我们可以通过类似
+
"+"(3 ,5) # 8
我有C / C ++和Python的背景知识,并且注意到两种语言之间的细微差别。例如,
return
是R中的函数,而不是语句,因此我们必须在括号中写上return(1)
。回到我的问题:for
是R中的一个函数吗?
感谢您的澄清。
答案 0 :(得分:3)
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
由reprex package(v0.2.1)于2019-05-19创建
以类似的方式,if (cond) foo else bar
语法映射到函数调用`if`(cond, foo, bar)
,但是没有else
函数。
所有其他控制流构造(请参见?Control
)也是函数。