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

我认为使用我的代码,R 只将字符读入列表,而不是我拥有的对象(模型)。任何帮助表示赞赏。我什至不知道我是否应该首先使用循环。

4

1 回答 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  
于 2016-05-11T05:19:12.147 回答