有人可以解释R中的波浪点(〜。)吗?我已经看过一些有关它的文章。我知道代字号用于公式,指定自变量和因变量。而且,我知道该点用于指示所有其他变量。更具体地说,有人可以在此示例中解释波浪号吗?
x <- sample(10)
x %>%
detect(~. > 5)
谢谢
答案 0 :(得分:4)
正如MrFlick指出的那样,这是两个单独的运算符。它们一起提供了一种特殊的机制,该机制允许tidyverse程序包动态构建lambda functions。这在?purrr::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"
purrr::detect()
calls this internally,它创建一个函数,该函数返回一个逻辑值,该逻辑值指示该函数的参数是否大于5。
正如Konrad指出的那样,该机制特定于tidyverse,并且 not 总体上不起作用。在tidyverse之外,此语法的行为在related question中进行了解释。