不带参数的用户定义函数,在R中,在管道中

不带参数的用户定义函数,在R中,在管道中,r,function,pipe,R,Function,Pipe,我想编写一个没有参数的函数,并且可以在管道中引用(%>%),因此我不必重复几行代码。然而,我在多次尝试后都没有得到它。如果您能帮助我编写管道中引用的函数,并提供参数,我将不胜感激。非常感谢您的帮助!简化示例如下: 库(tidyverse) a 22 12 #> 3 3 13 #> 4 4 14 #> 5 5 15 #> 6 6 16 #> 7 7 17 #> 8 8 18 #> 9 9 19 #> 10 10 20 y%y() #>y(.)中出错:未使用的参数(.)

我想编写一个没有参数的函数,并且可以在管道中引用(%>%),因此我不必重复几行代码。然而,我在多次尝试后都没有得到它。如果您能帮助我编写管道中引用的函数,并提供参数,我将不胜感激。非常感谢您的帮助!简化示例如下:

库(tidyverse)
a 22 12
#> 3   3 13
#> 4   4 14
#> 5   5 15
#> 6   6 16
#> 7   7 17
#> 8   8 18
#> 9   9 19
#> 10 10 20
y%y()
#>y(.)中出错:未使用的参数(.)

由(v0.3.0)

管道于2020-08-16创建,该管道认为函数的第一个参数是数据,例如mutate或filter的第一个参数都是数据。所以当你做
mtcars%>%变异(a=5)
你实际上是在做
mutate(mtcars,a=5)

因此,您必须将其修改为:

y <- function(data) {
  filter(data, d < 80)
}

c %>% mutate(d = a*b) %>% y()

  a  b  d
1 1 11 11
2 2 12 24
3 3 13 39
4 4 14 56
5 5 15 75
y%突变(d=a*b)%>%y()
a、b、d
1 1 11 11
2 2 12 24
3 3 13 39
4 4 14 56
5 5 15 75

是的,这样可以。对不起,我的例子不够清晰,太简单了。在我修改过的示例中,我是否在函数中引用c并不重要。问题是:在一系列命令中修改数据后,我如何引用这些数据?我不确定我是否理解了您想要的内容,但按照我回答的方法对您的示例仍然有效:
y%mutate(d=a*b)%%>%y()
。在本例中,y()将使用变异的c作为第一个参数。是的,这正是我所需要的,非常感谢!我不清楚需要什么背后的理论,但我可以用你的答案来解决我的问题。@David你可以看一下:完成。再次感谢你的回答。