这个问题与类似的帖子有关。 Function writing passing column reference to group_by

但是,我想将几​​个输入传递给使用group_by_()和summarise_()的函数。

这是我的功能:

foo <- function(data,column,x1,x2){
    data %>%
            group_by_(.dots = column) %>%
            summarise_(.dots= c(~mean(x1), ~mean(x2)))
}


但是,当我跑步时

foo(mtcars,"cyl", "disp", "hp")


我收到以下错误。

Error in UseMethod("as.lazy_dots") :
  no applicable method for 'as.lazy_dots' applied to an object of class "c('double', 'numeric')"
In addition: Warning message:
In mean.default(x1) : argument is not numeric or logical: returning NA


谁能告诉我我在哪里做错了?

最佳答案

好吧,好像您只是再次想要summarise_each,它确实具有标准的评估替代品summarise_each_。您可以为app编写>
并用

foo <- function(data, column, x1, x2){
    data %>%
            group_by_(.dots = column) %>%
            summarise_each_(funs(mean), c(x1,x2))
}

08-19 23:47