我有预测器列表和带数据的data.frame。我想做的是使用这个预测变量并将它们的结果与一些聚合函数结合起来。我怎么能这样做?
示例数据如下所示:
预测因子列表p1 .. pn。 (在我的情况下树木)
每个预测变量返回两列:给定行的“分类概率”和“1 - 分类概率”。
我想总结每个预测变量返回的'分类概率',并将其与总和'1 - 分类概率'进行比较。
示例数据:
library('rpart');
size = 10;
samplesize=100;
mydata=data.frame(age=sample(10:40, samplesize, replace=TRUE), weight=rnorm(samplesize, mean = 60, sd = 20), girth=rnorm(samplesize, mean = 60, sd = 20))
mydata=cbind(mydata, dec=((mydata$weight > 40) | (mydata$girth > 60)))
attributes = colnames(mydata)[1:length(colnames(mydata)) - 1]
model <- list();
for(i in 1:size) {
attr = sample(1:length(attributes), sample(1:length(attributes)));
fmla <- as.formula(paste("dec ~ ", paste(attributes[attr], collapse= "+")));
tree <- rpart(fmla, data=mydata, method="class", control=model$rc);
model[[i]] <- tree;
}
其中model是预测变量列表,mydata是实际数据。我现在可以预测:
predict(model[[1]], mydata)
替代
这里我无法实现的主要是聚合函数的结果。我可以在这里给出更简单的情况:我有功能:
f <- function (x, n) {
data.frame(first = x + n, second=x * n);
}
并希望得到结果列first
的总和,以及second
列(对于每行而非全局)的值的单独总和,用于以下调用:
f(1:4, 2)
f(1:4, 3)
..
f(1:4, n)
答案 0 :(得分:2)
这可能是替代方案的解决方案:
f <- function (x, n) {
data.frame(first = x + n, second=x * n);
}
n <- 10
l <- lapply(2:n, f, x = 1:4)
### t(sapply(l, colSums))
Reduce('+', l)