我正在使用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
,但我不知道如何将赋值运算符与提取列表的相应元素结合起来,即[[()
。更多的是纯粹的反循环过早优化练习,但仍然:) 谢谢!