1

我正在使用lm模型列表。让我们创建一个小例子:

set.seed(1234)
mydata <- matrix(rnorm(40),ncol=4)

modlist <- list()

for (i in 1:3) {
  modlist[[i]] <- lm(mydata[,1] ~ mydata[,i+1])
}

实际上有大约 50 个模型。如果您打印该modlist对象,您会注意到call每个模型的属性都是通用的,即lm(formula = mydata[, 1] ~ mydata[, i + 1]). 由于将需要此列表的后续子集,因此我希望能够方便地查看每个模型中因变量的名称,并将该名称分配给相应的call属性:

modlist[[1]]$call <- "Factor 1"

可以看到,模型调用在 的第一个元素中已更改为“因子 1” modlist。假设我有一个名称向量,我想分配它:

modnames <- paste0("Factor",1:3)

当然,可以将该向量的相应值分配给列表中的相应模型,例如:

for (i in 1:3) {
  modlist[[i]]$call <- modnames[i]
}

有这个的矢量化版本吗?我怀疑它会是mapply,但我不知道如何将赋值运算符与提取列表的相应元素结合起来,即[[()。更多的是纯粹的反循环过早优化练习,但仍然:) 谢谢!

4

0 回答 0