gpt4 book ai didi

r - `for`是R中的函数吗?

转载 作者:行者123 更新时间:2023-12-04 04:28:26 24 4
gpt4 key购买 nike

在诺曼·马特洛夫(Norman Matloff)的《 R编程的艺术》的第307页中,作者说

for() is, in fact, a function.



上下文是对一段代码片段的说明
for (i in 1:length(x)) z[i] <- x[i] + y[i]

作者评论

Though syntactically the loop looks innocuous, for() is, in fact, a function.



我的理解是他在说的是 for()是一个函数,就像 +是一个函数(可调用对象)一样。假设我们可以通过标准的函数调用方式调用 +,例如
"+"(3 ,5)  # 8

我有C/C++和Python的背景知识,并且注意到两种语言之间存在一些细微的差异。例如,
  • return是R中的一个函数,而不是一个语句,因此我们必须在括号中写上return(1)

  • 回到我的问题: for是R中的函数吗?

    感谢您的澄清。

    最佳答案

    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)也是函数。

    关于r - `for`是R中的函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56205553/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com