得到一个复杂的列表的唯一条目中的R

问题描述:

我有一个列表的列表:得到一个复杂的列表的唯一条目中的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

如果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 我想要这样的结果:“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