我的代码:
#My test wrapper
SL.test <- function(Y.temp, X.temp, newX.temp, family, ...){
fit.test <- glm(Y.temp ~ state, data=X.temp, family=family)
out <- predict(fit.test, newdata=newX.temp, type="response")
fit <- list(object=fit.test)
foo <- list(out=out, fit=fit)
class(foo$fit) <- c("SL.glm")
return(foo)
}
#My library
SL.library <- list("SL.test")
fit <- SuperLearner(Y=data.samp$y, X=data.samp[, c(2:7, 9:11)], SL.library=SL.library,
family=binomial(), method="method.NNLS", verbose=TRUE)
错误:
out [,s]&lt; - testAlg $ pred出错:要替换的项目数不是替换长度的倍数
如果我用现成的包装填充SL.library,没有问题。例如,以下内容没有错误:
SL.library <- list("SL.glm", "SL.mean")
任何想法都会非常感激。如果有帮助,我的包装器基本上从附录B(第585页)复制到M.J. van der Laan和S. Rose 目标学习:观察和实验数据的因果推理。
答案 0 :(得分:0)
修复很简单。改变
foo <- list(out=out, fit=fit)
到
foo <- list(pred=out, fit=fit)
做了这个伎俩。显然,SuperLearner现在需要一个包装器来返回两个对象的列表:pred和fit。