如果你真的想使用索引和forumla接口實例:
index_agg <- function(formula, data, FUN, ...) {
require(formula.tools)
left <- as.numeric(lhs(formula))
right <- as.numeric(rhs(formula))
f <- paste0(colnames(data[,c(left, right)]), collapse=" ~ ")
aggregate(as.formula(f), data=data, FUN=FUN, ...)
}
head(index_agg(6 ~ 1, data=mtcars, FUN=mean))
## mpg wt
## 1 10.4 5.3370
## 2 13.3 3.8400
## 3 14.3 3.5700
## 4 14.7 5.3450
## 5 15.0 3.5700
## 6 15.2 3.6075
head(index_agg(5 ~ 1, data=mtcars, FUN=mean))
## mpg drat
## 1 10.4 2.965
## 2 13.3 3.730
## 3 14.3 3.210
## 4 14.7 3.230
## 5 15.0 3.540
## 6 15.2 3.110
如果你不想formula.tools
作爲一個依賴的更多信息:
index_agg <- function(formula, data, FUN, ...) {
left <- as.numeric(toString(formula[3]))
right <- as.numeric(toString(formula[2]))
f <- paste0(colnames(data[,c(left, right)]), collapse=" ~ ")
aggregate(as.formula(f), data=data, FUN=FUN, ...)
}
歡迎來到SO。也許如果你展示了更多的代碼,並提供了一個最小化的工作示例,就像你提交問題時提示的那樣,這會讓人們更容易幫助你。 – hrbrmstr
您可以使用列表索引和數據框架方法。 '集合(虹膜[1],虹膜[5],平均值)'與集合(萼片長度〜物種,虹膜,平均值)' –
@RichScriven好的。 –