使用带有summarize_each或mutate_each

时间:2016-04-28 06:09:31

标签: r dplyr

我想在调用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)))

我将如何实现这一目标?显然,在使用它之前命名该函数是有效的。

1 个答案:

答案 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的额外内容。如果您愿意,可以使用大括号{}代替外部对,这可能会更具语法意义。