gpt4 book ai didi

r - R 中的波浪号 (~.)

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

谁能解释一下 R 中的波浪号 (~.)?我已经看到一些关于它的帖子。我知道波浪号用于公式,指定自变量和因变量。而且,我知道点用于表示所有其他变量。更具体地说,有人可以解释这个例子中的波浪号吗?

x <- sample(10)
x %>%
detect(~. > 5)

谢谢

最佳答案

正如 MrFlick 所指出的,这是两个独立的运营商。它们一起提供了一种特殊的机制,允许 tidyverse 包构建 lambda functions在飞行中。这在 ?purrr::as_mapper 中得到了最好的描述。 .具体来说,

If a formula, e.g. ~ .x + 2, it is converted to a function. There are three ways to refer to the arguments:

  • For a single argument function, use .

  • For a two argument function, use .x and .y

  • For more arguments, use ..1, ..2, ..3 etc


使用您的示例:
purrr::as_mapper( ~. > 5 )
# <lambda>
# function (..., .x = ..1, .y = ..2, . = ..1)
# . > 5
# attr(,"class")
# [1] "rlang_lambda_function"
创建一个函数,该函数返回一个逻辑值,指示函数的参数是否大于 5。 purrr::detect() generates this function internally然后用它来遍历输入向量 x .最终结果是 x的第一个元素满足“大于 5”约束。
正如 Konrad 所指出的,这种机制是 tidyverse 特有的,一般情况下不起作用。在 tidyverse 之外,此语法的行为在 related question 中进行了解释。 .

关于r - R 中的波浪号 (~.),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53159979/

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