2015-10-23 137 views
0

我有以下列格式的列表:從R中列表中提取元素?

[[825]][[4]] 

每個列表元素中的4是不同的大小和尺寸數組:

[[1]] 
[1] 0.02918644 0.03239657 0.03560670 0.03881683 0.04202696 0.04523709 0.04844722 0.05165735 
[9] 0.05486748 0.05807761 0.06128774 0.06449787 0.06770800 0.07091813 0.07412827 0.07733840 
[17] 0.08054853 0.08375866 0.08696879 0.09017892 

[[2]] 
[1] 0.7581078 0.7587820 0.7608009 0.7641538 0.7688234 0.7747857 0.7820113 0.7904655 0.8001093 
[10] 0.8109003 0.8244816 0.8444896 0.8706241 0.9023530 0.9391094 0.9803280 1.0254709 1.0740433 
[19] 1.1256013 1.1797536 

[[3]] 
      [,1]  [,2]   [,3] 
[1,] 0.4177711 0.34606863 2.361603e-01 
[2,] 0.4345125 0.35491274 2.105747e-01 
[3,] 0.4512540 0.36375685 1.849892e-01 
[4,] 0.4679954 0.37260096 1.594036e-01 
[5,] 0.4847369 0.38144507 1.338180e-01 
[6,] 0.5014783 0.39028918 1.082325e-01 
[7,] 0.5182198 0.39913329 8.264693e-02 
[8,] 0.5349612 0.40797740 5.706137e-02 
[9,] 0.5517027 0.41682150 3.147581e-02 
[10,] 0.5684441 0.42566561 5.890257e-03 
[11,] 0.6059978 0.39400216 0.000000e+00 
[12,] 0.6497759 0.35022414 0.000000e+00 
[13,] 0.6935539 0.30644612 0.000000e+00 
[14,] 0.7373319 0.26266811 -2.408519e-18 
[15,] 0.7811099 0.21889009 -6.394265e-19 
[16,] 0.8248879 0.17511207 1.129666e-18 
[17,] 0.8686659 0.13133405 2.898758e-18 
[18,] 0.9124440 0.08755604 4.667850e-18 
[19,] 0.9562220 0.04377802 6.436942e-18 
[20,] 1.0000000 0.00000000 0.000000e+00 

[[4]] 
      [,1] 
[1,] 0.03849906 
[2,] 0.04269549 
[3,] 0.04680160 
[4,] 0.05079714 
[5,] 0.05466400 
[6,] 0.05838658 
[7,] 0.06195207 
[8,] 0.06535055 
[9,] 0.06857498 
[10,] 0.07162115 
[11,] 0.07433489 
[12,] 0.07637498 
[13,] 0.07776951 
[14,] 0.07859245 
[15,] 0.07893464 
[16,] 0.07889032 
[17,] 0.07854784 
[18,] 0.07798443 
[19,] 0.07726429 
[20,] 0.07643877 

我想有4個新的清單,每個與825元素:

[[4]][[825]] 

例如,825列表中的所有[[1]],[[2]]等都應該組合。

這樣做的最好方法是什麼?我一直在試圖與一些弄明白類的應用..

+2

你想要什麼並不清楚。你想如何結合這些元素? – akrun

+0

@akrun只需要4個825列表,而不是825個4列表。所以從所提供的數據來看,所有的[[1]],[[2]],[[3]],[[ 4]]將分別合併到他們自己的列表中 –

+0

您能提供一個可重複使用的小例子來測試嗎? – akrun

回答

2

首先創建列表的一個例子列表:

big.lst <- lapply(1:825, function(x) rep(list(rnorm(10)), 4)) 

#check lengths 
length(big.lst) 
#[1] 825 
unique(lengths(big.lst)) 
#[1] 4 

然後lapply在大名單中的一個子集。我選擇1:4創建四個新的組,但您可以用1:length(big.lst[[1]]) genralize每個子表具有相同的長度:

newlst <- lapply(1:4, function(x) lapply(big.lst, '[[', x)) 

#verify answer 
length(newlst) 
#[1] 4 
unique(lengths(newlst)) 
#[1] 825