我正在尝试编写一个函数,它将按年龄和国家为我提供简单的描述性统计数据。
以下是我的数据示例:
popcount = 200:250
sex = rep(c("M", "F"), 25)
country = rep(c("NZ", "Aus", "Fiji", "PNG", "Samoa"), 10)
为了获得聚合,我已经指定了以下函数
Aggregate_fun <- function(pop, ag1, ag2) {
popbylist <- data.frame(aggregate(pop, by = list(ag1, ag2)), FUN=sum)
return(popbylist)
}
然后我在我的数据
上运行此功能Gend_Country <- Aggregate_fun(pop = popcount, ag1 = sex, ag2 = country)
运行时,我收到以下错误消息:
match.fun(FUN)中的错误:参数&#34; FUN&#34;缺少,没有默认
6。 match.fun(FUN) 5。 aggregate.data.frame(as.data.frame(x),...) 4。 aggregate.default(pop,by = list(ag1,ag2)) 3。 aggregate(pop,by = list(ag1,ag2)) 2。 data.frame(aggregate(pop,by = list(ag1,ag2)),FUN = sum) 1。 Aggregate_fun(pop = popcount,ag1 = sex,ag2 = country)
我知道我指定要聚合的变量列表的方式有错误。我已经尝试了很多不同的东西来解决这个问题,但是没有一个能够解决问题。有谁知道如何正确编写此功能?
答案 0 :(得分:2)
看起来括号在该聚合函数中放错了位置,将“FUN”置于聚合之外。另外popcount有51个值,而另外两个只有50个。下面的代码正在做我认为你想要的。
popcount = 201:250
sex = rep(c("M", "F"), 25)
country = rep(c("NZ", "Aus", "Fiji", "PNG", "Samoa"), 10)
Aggregate_fun <- function(pop, ag1, ag2) {
popbylist <- data.frame(aggregate(pop, by = list(ag1, ag2), FUN=sum))
return(popbylist)
}
Gend_Country <- Aggregate_fun(pop = popcount, ag1 = sex, ag2 = country)