我正在使用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"
可以看到模型调用已更改为&#34;因子1&#34;在modlist
的第一个元素中。让我们说我有一个名字的矢量,我想指定:
modnames <- paste0("Factor",1:3)
当然,可以将该向量的相应值分配给列表中的相应模型,例如:
for (i in 1:3) {
modlist[[i]]$call <- modnames[i]
}
这是否有矢量化版本?我怀疑它将是mapply
,但我无法弄清楚如何将赋值运算符与提取列表的相应元素(即[[()
)结合起来。更多纯粹的反循环过早优化练习,但仍然:)谢谢!