【发布时间】:2011-09-23 16:24:22
【问题描述】:
我有一堆动态创建的回归存储在一个名为regressions 的列表中。现在我想有效地重命名它们的系数。到目前为止,我所拥有的是这个有效的循环:
for (i in 1:length(params[,1])){
names(regressions[[i]]$coefficients)[pos] <- paste(params[i,1],".lag",params[i,2],sep="")
}
我已经尝试了很长一段时间,以便在函数的帮助下更普遍地完成这项工作,因为这不是我拥有的唯一回归列表。但是我无法让其他任何工作。这里基本基于 lapply 的其他一些尝试:
correctNames <- function(reglist,namevec,pos){
names(reglist[[i]]$coefficients)[pos] <- as.character(namevec)
}
lapply(regressions,correctNames(reglist,namevec,pos),
reglist=regressions,namevec=params[,1],pos=2)
另一个尝试是编写一个带有 for 循环的函数,该循环在内部也可以作为 print 显示,但不会全局分配名称(存储回归列表的位置)。
correctNames <- function(reglist,pos,namevec){
for (i in 1:length(params[,1])){
names(reglist[[i]]$coefficients)[pos] <- paste(namevec,".lag",namevec,sep="")
}
#this test proves it's work inside the function...
print(reglist[[10]]
}
啊,让我休息一下。
【问题讨论】:
-
我没有投反对票,但我要注意的是,您没有说出了什么问题尝试没有成功。
-
是的。最后一种方法不起作用,因为当我在控制台上调用回归时,名称保持不变。这甚至没有让我感到惊讶,我只是错过了如何在这种情况下将其分配给全球环境。另一个返回以下错误:error in correctNames(reglist, namevec, pos) : object 'namevec' not found