我搜索了 ??"~"
但只找到了 rlang::env_bind
(可能是 %<~%
)和 base::~
。在 RStudio 中,如何找到 Purrr 的 ~
文档?例如,如果我忘记了如何使用带有两个输入的 ~
,我该去哪里查找?
purrr
函数的上下文中使用~
时,它将传递给as_mapper()
函数,然后传递给rlang
的as_function()
函数。这些帮助文件提供了使用此功能所需的基本信息。更详细的说明可以在Advanced R Book第9章第22节中找到,其中包含一些很好的示例,并且该章节继续介绍这些想法。AdvanceR(链接在另一个答案中给出)提供了一个很好的解释。在purrr cheatsheat第一页左下角也提供了一个简短描述(用法示例)。
使用 twiddle ~
与多个参数的用法可以在 purrr 文档中的不同函数中查看。例如,map 查看其参数描述,其中说明:
.f 函数、公式或向量(不一定是原子)。如果是函数,则按原样使用。如果是公式,例如 ~ .x + 2,则将其转换为函数。有三种方法可引用参数: 对于单参数函数,使用 .
对于两个参数的函数,使用 .x 和 .y
对于更多参数,使用 ..1、..2、..3 等。
这种语法允许您创建非常紧凑的匿名函数。
此外, R 的最新版本(4.1.0)也开始使用类似的函数速记符号(链接)
R 现在提供用于创建函数的速记符号,例如 \(x) x + 1 被解析为 function(x) x + 1。
这种速记符号在 tidyverse 之外的函数中也可能很有用,与 twiddle 的区别仅在于默认情况下没有为参数命名。但是,当一个不可见的函数要在另一个函数中使用时,这种非默认命名也可能证明很有用,twiddle 风格的符号在这种情况下将无法使用。
twiddle
与新的基本 R 匿名函数语法非常不同。例如,twiddle
实际上并没有创建匿名函数;purrr 的函数只是将公式对象强制转换为它们可以处理的函数形式。 - J. Mini
purrr
,它是语言的一部分。请参阅语言定义:https://cran.r-project.org/doc/manuals/r-release/R-lang.html - tmfmnkmap()
函数的文档中指出,.f
参数是函数、公式或向量(不一定是原子)
。 - tmfmnk~
,则需要查看允许~
函数的函数,而不是~
本身。例如,purrr :: pmap
显示了三种参数化方式,使用.
(单个参数)、.x
和.y
(仅当有两个参数时)或..1
、..2
、..3
等用于多参量的~
-functions。 - r2evans