我想在调用summarize_each
时使用匿名函数:
# how to use an anonymous function in dplyr
df_foo = data_frame(x = rnorm(100),
y = rnorm(100))
df_foo %>%
summarize_each(funs(function(bar) sum(bar/10)))
我将如何实现这一目标?显然,在使用它之前命名该函数是有效的。
答案 0 :(得分:7)
这是一个使用大量括号的问题,所以一切都得到评估:
df_foo %>%
summarize_each(funs(((function(bar){sum(bar/10)})(.))))
#
# Source: local data frame [1 x 2]
#
# x y
# (dbl) (dbl)
# 1 1.113599 -0.4766853
你需要的地方
.
的括号,告诉funs
哪个参数可以粘贴传递给它的数据(看似多余的单参数函数,但多参数函数不是这样;参见?funs
了解更多示例)和这有点荒谬,但这似乎是最简洁funs
可以处理的。如果你看一下你要写的东西来评估一个类似的匿名函数就行了,比如说。
(function(bar){sum(bar/10)})(df_foo$x)
尽管包裹整个东西的对是funs
的额外内容。如果您愿意,可以使用大括号{}
代替外部对,这可能会更具语法意义。