假设我在R中有一些列表 li ,其元素是向量。例如,
li=list(a=c(2,3,5),b=c(77,119,81),c=c(9,11,13),d=c(5,2,3),e=c(80,45,16),f=c(16,17,19),g=c(13,9,11),h=c(22,13,58))
可以看出, li 中的所有对象都与不同,为矢量。因此,
duplicated(li)
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
此外,命令unique(li)
将返回相同的列表 li 。但请注意,元素a和d以及c和g等于作为集合。即,
setequal(li$a,li$d)
[1] TRUE
和
setequal(li$c,li$g)
[1] TRUE
因此,元素a由元素d复制作为集合,元素c由元素g复制作为集合。我的问题是:如何从列表中删除R中的“setequally”重复元素?
答案 0 :(得分:1)
怎么样:
li[apply(sapply(li, function(x) sapply(li, setequal, x)), 2, sum)==1]
$b
[1] 77 119 81
$e
[1] 80 45 16
$f
[1] 16 17 19
$h
[1] 22 13 58
答案 1 :(得分:0)
我们可以获取unique
sort
个ed元素,然后使用set
删除所有duplicated
个相等的元素
li1 <- lapply(li, function(x) sort(unique(x)))
i1 <- !(duplicated(li1)|duplicated(li1, fromLast = TRUE))
li[i1]
#$b
#[1] 77 119 81
#$e
#[1] 80 45 16
#$f
#[1] 16 17 19
#$h
#[1] 22 13 58