在页面的诺曼·马特夫的307 [R编程的艺术,作者说
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中的函数是什么?
谢谢你的任何澄清。
发布于 2019-05-20 15:46:19
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包创建于2019-05-19 (v0.2.1)
以类似的方式,if (cond) foo else bar
语法映射到函数if
,但else
不是函数。
所有其他控制流构造(参见?Control
)也是函数。
https://stackoverflow.com/questions/-100006754
复制相似问题