我有一个列表,其中每个列表元素本身都拥有包含多个名称对象的另一个列表。这些命名对象中的每一个都是具有相同长度的向量。我的目标是通过串联矢量将相关对象(同名的对象)有效地组合成一个矩阵。将相关的嵌套列表元素向量组合到矩阵中
下面是我正在使用的结构类型的示例。然而,在目前的应用程序中,它来自mclapply,因为它是一个并行化的多级模型,我不认为有办法让列表返回列表。
> test=lapply(1:2,function(x){out = list(); out$t=rnorm(3)+x; out$p =rnorm(3)+ x+.1; return(out)})
> test
[[1]]
[[1]]$t
[1] 0.5950165 0.8827352 0.5614947
[[1]]$p
[1] 2.6144102 1.9688743 0.6241944
[[2]]
[[2]]$t
[1] 2.562030 1.832571 3.018756
[[2]]$p
[1] 1.7431969 0.5305784 2.6935106
下面就来完成我想要
> t.matrix = cbind(test[[1]]$t,test[[2]]$t)
> t.matrix
[,1] [,2]
[1,] 2.2094525 2.634907
[2,] -0.2822453 2.440666
[3,] 1.1704518 2.483424
一个粗暴的方式,而是我希望能够在很长的列表(约1万台)做到这一点,我现在的解决方案不能缩放。
我想我可以使用for循环,但似乎必须有更好的方法来使用reduce或unlist或sapply或类似的东西来实现它。
我总是很高兴,当你分享这些题型使用'set.seed()',以便我们可以比较我们得到的输出和你打算得到的结果。 – A5C1D2H2I1M1N2O1R2T1 2013-02-12 18:59:05
感谢您的指针!我一定会在将来做到这一点。 – 2013-02-12 19:39:46