2017-01-26 1 views
0

Я пытаюсь использовать summaryise_all() внутри функции для применения общей функции ко всем столбцам фрейма данных. Это выглядит следующим образом:Использование общей функции в dplyr summaryise_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 всегда использует по умолчанию сумме функции, даже если я называю это нравится:

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

И проходя дополнительным Params для ... аргумент тоже не работает.

Что я делаю неправильно?

ответ

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)) 
+0

Большое спасибо! – CodingButStillAlive