首页
学习
活动
专区
圈层
工具
发布

R (~.)
EN

Stack Overflow用户
提问于 2018-11-05 18:17:18
回答 1查看 3.2K关注 0票数 5

有谁能解释一下倾斜点(~.)在R?我已经看过一些关于它的帖子了。我知道摆线是用于公式的,指定了自变量和因变量。而且,我知道点是用来表示所有其他变量的。更具体地说,有人能解释一下这个例子中的倾斜点吗?

代码语言:javascript
复制
x <- sample(10)
x %>%
  detect(~. > 5)

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-05 18:22:01

正如MrFlick所指出的,这是两个独立的操作符。它们一起提供了一种特殊的机制,允许tidyverse包动态地构造lambda函数。这最好用?purrr::as_mapper来描述。具体来说,

如果一个公式,例如~ .x + 2,它被转换成一个函数。有三种方法可以引用这些论点:

  • 对于单个参数函数,请使用。
  • 对于两个参数函数,使用.x和.y
  • 有关更多参数,请使用..1、..2、..3等

使用您的例子:

代码语言:javascript
复制
purrr::as_mapper( ~. > 5 )
# <lambda>
# function (..., .x = ..1, .y = ..2, . = ..1)
# . > 5
# attr(,"class")
# [1] "rlang_lambda_function"

创建一个函数,该函数返回一个逻辑值,该值指示函数的参数是否大于5。purrr::detect() 在内部生成此函数。,然后使用它遍历输入向量x。最后的结果是满足“大于5”约束的x的第一个元素。

正如康拉德所指出的那样,这种机制是特定于潮汐的,在一般情况下不起作用。除了tidyverse之外,这个语法的行为在相关问题中得到解释。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53159979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档