将向量中的值分配给lm模型列表中的`call`属性(mapply?)

时间:2014-04-01 13:05:57

标签: r vectorization mapply

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

0 个答案:

没有答案