谁能解释一下 R 中的波形点 (~.)?我已经看过一些关于它的帖子。我知道波形符用于公式,指定自变量和因变量。而且,我知道点用于指示所有其他变量。更具体地说,有人可以解释这个例子中的波形点吗?
x <- sample(10)
x %>%
detect(~. > 5)
Thanks
正如弗利克先生指出的那样,这是两个独立的运营商。它们共同提供了一种特殊的机制,允许 tidyverse 包构建拉姆达函数 https://en.wikipedia.org/wiki/Anonymous_function在飞行中。这是最好的描述?purrr::as_mapper https://www.rdocumentation.org/packages/purrr/versions/0.2.5/topics/as_mapper。具体来说,
如果有一个公式,例如~.x + 2,转换为函数。可以通过三种方式引用参数:
-
对于单个参数函数,请使用 .
-
对于两个参数函数,请使用 .x 和 .y
-
如需更多参数,请使用 ..1、..2、..3 等
使用你的例子:
purrr::as_mapper( ~. > 5 )
# <lambda>
# function (..., .x = ..1, .y = ..2, . = ..1)
# . > 5
# attr(,"class")
# [1] "rlang_lambda_function"
创建一个函数,该函数返回一个逻辑值,指示该函数的参数是否大于 5。purrr::detect()
内部生成这个函数 https://github.com/tidyverse/purrr/blob/43c3eb329001152762f618a62beec111702734b9/R/find-position.R#L38然后用它来遍历输入向量x
。最终结果是第一个元素x
满足“大于5”约束。
正如 Konrad 所指出的,这种机制是 tidyverse 特有的,并且not工作一般。在 tidyverse 之外,此语法的行为在相关问题 https://stackoverflow.com/questions/13446256/meaning-of-tilde-dot-argument.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)