I want to use anonymous functions in calls to summarize_each
:
# how to use an anonymous function in dplyr
df_foo = data_frame(x = rnorm(100),
It's a matter of using a lot of parentheses so everything gets evaluated:
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
where you need
.
to tell funs
which parameter to stick the data passed to it in (seemingly redundant with single-parameter functions, but not so with multi-parameter ones; see ?funs
for more examples), and which is kind of ridiculous, but that seems to be the most concise funs
can handle. It makes some sense if you look at what you'd have to write to evaluate a similar anonymous function on its own line, e.g.
(function(bar){sum(bar/10)})(df_foo$x)
though the pair wrapping the whole thing are extra for funs
. You can use braces {}
instead for the outer pair if you prefer, which might make more syntactic sense.