在dplyr summarise_all中使用泛型函数

时间:2017-01-26 17:46:48

标签: r dplyr

我试图在函数内部使用 summarise_all()来将泛型函数应用于数据框的所有列。它看起来像这样:

my_func <- function(df, FUN = sum, ...) {

    < ...more stuff here ....>

    # aggregate on desired level across all columns
    df %>% group_by(level) %>% summarise_all(funs(FUN(., ...)))
}

但问题是, my_func 总是使用默认的 sum 函数,即使我将其称为:

my_func(my.data.frame, FUN="mean") # or my_func(my.data.frame, FUN=mean)

...参数传递额外的参数也不起作用。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

一种选择是使用funs_代替funs

该功能看起来像

my_func <- function(df, FUN = "sum", ...) {
    df %>% 
        group_by(level) %>% 
        summarise_all(funs_(FUN, args = ...))
}

要使用args,需要将...参数放入列表中。

my_func(datasetname, FUN="mean", list(na.rm = TRUE))