从具有重复子元素的R中的列表中删除元素

时间:2018-02-18 17:56:05

标签: r list

我在R中有一个列表,里面有几个属性,比如说:

[[1]]
[[1]]$membership
[1] 1 1 1 2 2 2 1 3 3
[[2]]$csize
[1] 4 3 2
[[3]]$no
[1] 3

[[2]]
[[1]]$membership
[1] 1 1 2 2 2 3 1 3 3 4 4
[[2]]$csize
[1] 3 3 3 2
[[3]]$no
[1] 4

[[3]]
[[1]]$membership
[1] 1 2 2 2 2 3 1 3 4 4 4
[[2]]$csize
[1] 2 4 2 3
[[3]]$no
[1] 4

等等。

但是,列表中的某些元素具有相同的$no。例如,对于元素[[1]],我有[[1]][[3]]$no [1]3;对于元素[[2]],我有[[2]][[3]]$no [1] 4;对于元素[[3]],我有[[3]][[3]]$no [1] 4;对于元素[[4]],我有[[4]][[3]]$no [1] 5

如何保持列表中所有元素的$no不同?谢谢!

1 个答案:

答案 0 :(得分:1)

也许以下内容会这样做。
首先,创建一个与您的结构相同的列表。

lst <- lapply(1:3, function(x) list(membership = 1 + x, csize = 2 + x, no = 12 + (x > 1)))

现在看看哪些元素有重复的no向量并将其子集化。

inx <- !duplicated(sapply(lst, function(x) x$no))
lst[inx]