如何在R中循环遍历多个模型并将其放入列表中

3

我有117个模型,分别命名为m1、m2、m3、...、m117。我需要使用MuMIn包中的model.sel比较它们的AIC。模型比较的语法是model.sel(object, ...),其中object是模型列表。因此,我尝试创建一个循环来将所有117个模型读入列表中:

list<-list()

for (i in 1:117)

  {
  list[[i]]<- cat(paste("f",i))
  }

然而,我所拥有的只有
f 1f 2f 3f 4f 5f 6f 7f 8f 9f 10f 11f 12f 13f 14f 15f 16f 17f 18f 19f 20f 21f 22f 23f 24f 25f 26f 27f 28f 29f 30f 31f 32f 33f 34f 35f 36f 37f 38f 39f 40f 41f 42f 43f 44f 45f 46f 47f 48f 49f 50f 51f 52f 53f 54f 55f 56f 57f 58f 59f 60f 61f 62f 63f 64f 65f 66f 67f 68f 69f 70f 71f 72f 73f 74f 75f 76f 77f 78f 79f 80f 81f 82f 83f 84f 85f 86f 87f 88f 89f 90f 91f 92f 93f 94f 95f 96f 97f 98f 99f 100f 101f 102f 103f 104f 105f 106f 107f 108f 109f 110f 111f 112f 113f 114f 115f 116f 117

我认为我的代码只是将字符读入列表中,而没有读入我所拥有的对象(模型)。非常感谢您提供任何帮助。我甚至不知道是否应该首先使用循环。


你是怎样得到所有这些不同的模型对象的?如果一开始就把它们都放在一个列表中会更容易。你没有使用assign(),对吧?那个函数通常应该避免使用。 - MrFlick
1
list[i] <- get(paste0("m", i)) 的翻译如下:list[i] <- get(paste0("m", i)) - Adam Quek
谢谢,使用 get(paste()) 的方法确实有效! - le nghiem
1个回答

6
这里提供一个在鸢尾花数据上使用2个线性回归的解决方案。
模型如下:
 m1<-lm(Petal.Length ~ 1, data=iris)
 m2 <- lm(Petal.Length ~ Sepal.Length, data=iris)
 models <- paste0("m", 1:2)

获取AIC值的向量:
 sapply(models, function(x)AIC(get(x)))

      m1       m2 
599.1741 387.1350 

创建线性回归模型列表的方法如下:
lapply(models, function(x)get(x))

[[1]]

Call:
lm(formula = Petal.Length ~ 1, data = iris)

Coefficients:
(Intercept)  
      3.758  


[[2]]

Call:
lm(formula = Petal.Length ~ Sepal.Length, data = iris)

Coefficients:
 (Intercept)  Sepal.Length  
      -7.101         1.858  

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接