counts <- c(18,17,15,20,10,20,25,13,12)
outcome <- gl(3,1,9)
treatment <- gl(3,3)
model1 <- glm(counts ~ outcome + treatment, family = poisson())
model2 <- glm(counts ~ outcome, family = poisson())
print_params <- function(model){
cat("\nAIC:", model$aic,
"\nDeviance:", model$deviance)}
list_models <- list(model1,model2)
do.call("rbind", sapply(list_models, print_params, simplify = FALSE))
这给了我:
AIC: 56.76132
Deviance: 5.129141
AIC: 52.76132
Deviance: 5.129141NULL
我不确定为什么我会这样做。还有另一种方法吗?
答案 0 :(得分:3)
print_params
返回NULL
(cat
是副作用),因此,如果您查看*apply
的结果,则会得到{{1}的结果},然后是两个cat
的列表。 NULL
然后返回您的函数的结果,然后返回do.call
两个rbind
的结果,即一个NULL
。
要捕捉副作用,请稍微简化语法:
NULL
给出
do.call("cat", lapply(list_models, print_params))
答案 1 :(得分:1)