假设我有一个像以下那样的for循环
for(i in 1:2)
{
eigeni=lapply(rho,function(mat) eigen(mat[1:i,1:i])$values)
x=lapply(eigeni,function(x) i-sum(ifelse(x>1,x,1)-1))
}
i=1
时,x是
> x
$rs6139074
[1] 0.241097
$rs1418258
[1] 0.241097
i=2
时,x是
> x
$rs6139074
[1] 1.241097
$rs1418258
[1] 1.247
如何在每次迭代后按列存储x,如下所示? 我想要跟随
for(i in 1:2)
{
eigeni=lapply(rho,function(mat) eigen(mat[1:i,1:i])$values)
x[i]=lapply(eigeni,function(x) i-sum(ifelse(x>1,x,1)-1))
}
> x
$rs6139074
[1] 0.241097 1.241097
$rs1418258
[1] 0.241097 1.247
关注 Dave2e 回答 我得到了
> mylist
[[1]]
[[1]]$rs6139074
[1] 0.241097
[[1]]$rs1418258
[1] 0.241097
[[2]]
[[2]]$rs6139074
[1] 1.241097
[[2]]$rs1418258
[1] 1.247
答案 0 :(得分:1)
最简单的方法之一是定义一个空列表并在其上附加值:
mylist<-list()
for(i in 1:2)
{
eigeni=lapply(rho,function(mat) eigen(mat[1:i,1:i])$values)
x=lapply(eigeni,function(x) i-sum(ifelse(x>1,x,1)-1))
mylist[[i]]<-x
}
print(mylist)
当然,如果你可以使用lapply函数,那将是最精简和最可能最快的方法。