gpt4 book ai didi

删除列表中其他向量的子集的向量

转载 作者:行者123 更新时间:2023-12-04 12:14:14 25 4
gpt4 key购买 nike

我有一个包含不同长度向量的列表,例如:

a=c(12345,12367,91670,87276,92865)
b=c(12345,87276,89250)
c=c(12367,91670)
d=c(23753,82575,91475,10957,92865,24311)
mylist=list(a,b,c,d)
mylist

# [[1]]
# [1] 12345 12367 91670 87276 92865
#
# [[2]]
# [1] 12345 87276 89250
#
# [[3]]
# [1] 12367 91670
#
# [[4]]
# [1] 23753 82575 91475 10957 92865 24311

我的问题是如何删除此列表的向量,这些向量是同一列表的另一个向量的子集。即在这种情况下,如何删除列表的第三个对象,它是第一个对象的子集?

最佳答案

这可能效率很低,但如果您的列表不是那么大,它可以工作

find_nested <- function(mylist) {
mm <- sapply(mylist, function(x) sapply(mylist, function(y) all(x %in%y)))
diag(mm) <- FALSE
apply(mm,2,any)
}

这可以告诉您哪些向量是其他向量的子集。它通过将每个向量与每个其他向量进行比较来实现这一点。
find_nested(mylist)
# [1] FALSE FALSE TRUE FALSE

所以我们可以看到第三个项目包含在另一个列表中。

关于删除列表中其他向量的子集的向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43077350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com