gpt4 book ai didi

r - 如何将列表的每个元素作为未命名参数传递给函数?

转载 作者:行者123 更新时间:2023-12-01 11:44:27 25 4
gpt4 key购买 nike

假设我有一些模型存储在列表中:

mods <- list()
mods[[1]] <- lm(mpg ~ disp, data = mtcars)
mods[[2]] <- lm(mpg ~ disp + factor(cyl), data = mtcars)
mods[[3]] <- lm(mpg ~ disp * factor(cyl), data = mtcars)

我想使用 stats::AIC 来比较它们.我正在寻找从 AIC(mods[[1]], mods[[2]], mods[[3]]) 得到的输出,但我希望它可以概括为一个任意长的列表。我认为
do.call(AIC, mods)

会工作,但它返回一些非常冗长且无益的东西。 (如果列表已命名,则会导致错误,除非其中一个名称是 object ,对应于 AIC 的第一个参数,但您只会再次获得详细输出。)
do.call失败后,我开始想一个 eval(parse())解决方案,但我想我应该先在这里问。

最佳答案

summary(do.call(AIC, mods))
df AIC
Min. :3 Min. :153.4
1st Qu.:4 1st Qu.:159.6
Median :5 Median :165.8
Mean :5 Mean :163.1
3rd Qu.:6 3rd Qu.:168.0
Max. :7 Max. :170.2

但这可能不是您想要的。巴蒂斯特给出了答案:
my.aic <- function(x) {
x <- do.call(AIC, x)
rownames(x) <- NULL
return(x)
}
my.aic(mods)
## df AIC
## 1 3 170.2094
## 2 5 165.7680
## 3 7 153.4352

这相当接近:
AIC(mods[[1]], mods[[2]], mods[[3]])
## df AIC
## mods[[1]] 3 170.2094
## mods[[2]] 5 165.7680
## mods[[3]] 7 153.4352

关于r - 如何将列表的每个元素作为未命名参数传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16630776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com