不带参数的用户定义函数,在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你可以看一下:完成。再次感谢你的回答。