gpt4 book ai didi

r - dplyr::filter 内带有点的管道

转载 作者:行者123 更新时间:2023-12-01 19:37:04 26 4
gpt4 key购买 nike

我正在努力使用 %>% margritr 将内容从 dplyr 传输到函数过滤器内的另一个参数。

我认为这应该有效:

library(dplyr)
library(margritr)

d <- data.frame(a=c(1,2,3),b=c(4,5,6))
c(2,2) %>% filter(d, a %in% .)

但我明白了:

# Error in UseMethod("filter_") : 
# no applicable method for 'filter_' applied to an object of class "c('double', 'numeric')"

我希望它的工作方式与此相同:

filter(d, a %in% c(2,2))
# a b
# 1 2 5

我做错了什么?

最佳答案

管道设计为在传递第一个参数时围绕其组成函数。当您想规避此行为时,可以生成更灵活的匿名环境。您可以使用花括号来完成此操作,就像编写函数一样。

5 %>% 
{filter(iris, Sepal.Length == .)}

对于其工作原理,编写 {somefunctions(x, y)} 相当于编写 function(...) {somefunctions(x, y)}。因此上面的函数忽略它的参数,而只计算其环境中的变量。 . 代词由管道为其定义,并在全局环境中搜索其他变量(如 iris)。

关于r - dplyr::filter 内带有点的管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46728387/

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