r - within() 函数的特殊语法

标签 r syntax

我遇到了这个很棒的函数,叫做

within {base}

我现在比大肆宣传的更频繁地使用它

mutate {dplyr}

我的问题是,为什么 within() 有这样一种特殊的格式,赋值运算符使用 <- 而不是通常的 =参数;它与 mutate 有何不同,除了我发现的这篇精彩文章中给出的内容。我有兴趣了解底层机制。 Article of Bob Munchen - 2013

最佳答案

within 函数将一个表达式作为第二个参数。该表达式本质上是一个代码块,最好包含在大括号 {} 中。

在此代码块中,您可以分配新变量、更改值等。变量可以在代码块中用作对象。

另一方面,

mutate 接受一组用于突变的参数。这些参数必须以应创建的变量命名,并获取该变量的值作为值。

所以:

mutate(iris, ratio = Sepal.Length/Petal.Length)
# and
within(iris, {ratio = Sepal.Length/Petal.Length})

结果相同。当您删除大括号时,问题就开始了:

> within(iris, ratio = Sepal.Length/Petal.Length)
Error in eval(substitute(expr), e) : argument is missing, with no default

大括号包含一个表达式(一段代码),因此 within() 可以正常工作。如果您不使用 {},则 R 语义会将最后一条命令读取为“调用 within 函数,将 iris 作为第一个参数,并且第二个参数 ratio 设置为 Sepal.Length/Petal.Length”。由于函数 within() 没有参数 ratio,因此该参数将被忽略。相反,within 查找应该是第二个参数的表达式。但它找不到那个,所以这解释了错误。

所以这没什么特别之处。这两个函数只是有不同的参数。剩下的就是 R 处理参数的方式。

关于r - within() 函数的特殊语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44161183/

相关文章:

javascript - 奇怪的 javascript 函数定义语法的文档? () => {}

r - 基于并发请求的 RCurl 爬虫问题

r - 如何使用 rmarkdown 创建自包含的 html 报告?

python - R readBin 与 Python 结构

r - 根据 bootstrap GLM 列表计算 LC50

r - 使用 Base R 绘制数据子集的图表

bash - 在 bash 循环参数列表中注释

python - 如何在定义指示返回的非典型对象的函数期间创建提示?

c++ - C++ 类的静态变量初始化,为什么要包含数据类型?

C++学习函数语法