在R中:如何按列表中的顺序存储数字

时间:2016-07-15 00:30:33

标签: r

假设我有一个像以下那样的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

1 个答案:

答案 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函数,那将是最精简和最可能最快的方法。