得到一个复杂的列表的唯一条目中的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
欣赏任何帮助。
答
如果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
你能澄清的“独一无二”的定义是什么?看起来'pos'值是不相关的,只有'mi'和'group'值? – 2014-09-10 13:24:20