2014-09-10 16 views
1

我有一個列表的列表:得到一個複雜的列表的唯一條目中的R

 

    $markers     
     mi chr phys.pos group 
    19 mG001 8 4803507 1 
    20 mG002 8 4841939 1 
    3 mG003 8 5268581 2 
    1 mG004 8 5278404 2 
    6 mG005 8 8352013 3 
    7 mG006 8 8352443 3 
    9 mG008 8 8354875 3 
    10 mG009 8 8356039 4 
    11 mG010 8 8357610 4 
    13 mG012 8 8361049 5 
    14 mG013 8 8361845 5 
    15 mG014 8 1640281 6 
    16 mG015 8 1640663 7 

    $plants    
     plant group  
    9 DL750 1  
    11 D827 1  
    17 DL26 1  
    25 D901 2  
    30 DR202 3  
    35 D356 3  
    52 F015 4 


我想獲得的是在「羣」獨特的條目列表,和剩菜的列表。 的結果預計爲:

(一)獨特的名單:

 

    $markers     
     mi chr phys.pos group 
    19 mG001 8 4803507 1 
    3 mG003 8 5268581 2 
    6 mG005 8 8352013 3 
    10 mG009 8 8356039 4 
    13 mG012 8 8361049 5 
    15 mG014 8 1640281 6 
    16 mG015 8 1640663 7 

    $plants    
     plant group  
    9 DL750 1  
    25 D901 2  
    30 DR202 3  
    52 F015 4 


(B)剩餘列表:

 

    $markers     
     mi chr phys.pos group 
    20 mG002 8 4841939 1 
    1 mG004 8 5278404 2 
    7 mG006 8 8352443 3 
    9 mG008 8 8354875 3 
    11 mG010 8 8357610 4 
    14 mG013 8 8361845 5 

    $plants    
     plant group  
    11 D827 1  
    17 DL26 1  
    35 D356 3 


欣賞任何幫助。

+0

你能澄清的「獨一無二」的定義是什麼?看起來'pos'值是不相關的,只有'mi'和'group'值? – 2014-09-10 13:24:20

回答

4

如果myList是你的清單,然後只需

unique <- lapply(myList, function(x) x[!duplicated(x$group), ]) 
unique 
# $markers 
#  mi chr phys.pos group 
# 19 mG001 8 4803507  1 
# 3 mG003 8 5268581  2 
# 6 mG005 8 8352013  3 
# 10 mG009 8 8356039  4 
# 13 mG012 8 8361049  5 
# 15 mG014 8 1640281  6 
# 16 mG015 8 1640663  7 
# 
# $plants 
# plant group 
# 9 DL750  1 
# 25 D901  2 
# 30 DR202  3 
# 52 F015  4 

leftovers <- lapply(myList, function(x) x[duplicated(x$group), ]) 
leftovers 
# $markers 
#  mi chr phys.pos group 
# 20 mG002 8 4841939  1 
# 1 mG004 8 5278404  2 
# 7 mG006 8 8352443  3 
# 9 mG008 8 8354875  3 
# 11 mG010 8 8357610  4 
# 14 mG013 8 8361845  5 
# 
# $plants 
# plant group 
# 11 D827  1 
# 17 DL26  1 
# 35 D356  3 
+0

謝謝。有用。 – user3354212 2014-09-10 13:25:05

+0

如何將列的列轉換爲矢量?如:

 del <- lapply(leftovers[1], "[[", 1); del;
我想要這樣的結果:「mG002」,「mG004」,...如何擺脫結果前面的$ mi? – user3354212 2014-09-10 15:29:31

+0

嘗試'剩菜$標記[,1]'。或者,如果你想要一個字符列,然後'as.character(剩菜$ markers [,1])''。或者如果你想以你的方式,那麼'lapply(剩菜,「[[,1] [[1]]' – 2014-09-10 18:24:18