-1

と呼ばれるいくつかのリストに保存された、動的に作成された回帰をたくさん取得しました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 ループを使用して関数を作成することでした。

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]]
}

あ、ちょっと休憩。

4

2 に答える 2

3

「rectNames」関数の最初のバージョンには「i」はありません。おそらく、それを「回帰」に割り当てているのではなく、回帰オブジェクトのコピーにのみ割り当てていることに気付いていないでしょう。代わりに試してください:

correctNames <- function(reglist,namevec,pos){
  names(reglist$coefficients)[pos] <- as.character(namevec)
   return(reglist)                          }
newregs <- mapply(correctNames,  
                     reglist=regressions, 
                     namevec=as.character(params[,1]), 
                     MoreArgs= list( pos=2))

Ramnath からのメモを見て、コードは機能したが、「params」に不安定な名前を付けていることに気付いた後、params を調べたところ、それが要因であることがわかり、mapply呼び出しの引数を に変更しましたas.character(params[,1])

> newregs[1,1]
[[1]]
(Intercept)     log(M1) 
  -5.753758    2.178137 
于 2011-09-23T16:37:14.453 に答える
1

これがあなたの以前の質問へのフォローアップである場合、これが私がすることです

coefs = plyr::ldply(regressions, coef)
coefs = transform(coefs, reg_name = paste(x, '.lag', l, sep = ""))[,-c(1, 2)]
names(coefs) = c('intercept', 'reg_coef', 'reg_name')

これにより、

 intercept reg_coef     reg_name
1 -5.753758 2.178137 log(M1).lag0
2  7.356434 7.532603      rs.lag0
3  7.198149 8.993312      rl.lag0
4 -5.840754 2.193382 log(M1).lag1
5  7.366914 7.419599      rs.lag1
6  7.211223 8.879969      rl.lag1
7 -5.988306 2.220994 log(M1).lag4
8  7.395494 7.127231      rs.lag4
9  7.246161 8.582998      rl.lag4
于 2011-09-23T16:35:25.500 に答える