假设我们从以下几个方面开始:
library(dplyr)
library(magrittr)
library(tibble)
set.seed(123)
tbl <- data_frame(value=rnorm(100), class=rep(LETTERS[1:5], each=20))我想编写一个函数summarize_means(data, values, groupby),给定tbl、"value"和"class",它返回与以下代码相同的输出:
tbl %>%
group_by(class) %>%
summarise(mean(value))我的第一次尝试是:
summarise_means <- function(data, values, groupby) {
data %>%
group_by(groupby) %>%
summarise(mean(values))
}当然,失败了
Error: unknown variable to group by : groupby 经过一番深入研究,我决定我应该使用group_by_和summarize_函数,但我怀疑在这里使用它们是错误的,因为这仍然无法工作:
summarise_means <- function(data, values, groupby) {
data %>%
group_by_(groupby) %>%
summarise_(mean(values))
}当我打电话给summarise_means(tbl, 'value', 'class')时,我得到:
# A tibble: 5 x 2
class NA_real_
<chr> <dbl>
1 A NA
2 B NA
3 C NA
4 D NA
5 E NA
Warning message:
In mean.default(values) : argument is not numeric or logical: returning NA我真的不明白这里出了什么问题。任何帮助都是非常感谢的!
发布于 2016-07-18 20:13:04
您需要将函数与参数一起传递:
summarise_means <- function(data, values, groupby) {
data %>%
group_by_(groupby) %>%
summarise_(Mean = values)
}
summarise_means(tbl, 'mean(value)', 'class')
# A tibble: 5 x 2
class Mean
<chr> <dbl>
1 A 0.14162380
2 B -0.05125716
3 C 0.10648523
4 D -0.11991706
5 E 0.37509474https://stackoverflow.com/questions/38445041
复制相似问题