根据列表组合筛选列表列表 - R

  • 本文关键字:列表 筛选 组合 r
  • 更新时间 :
  • 英文 :


>我有一个列表列表:

library(partitions)
list_parts(3)
>[1] (1,2,3)
>[[2]]
>[1] (1,3)(2)
>[[3]]
>[1] (1,2)(3)
>[[4]]
>[1] (2,3)(1)
>[[5]]
>[1] (1)(2)(3)

我需要根据组合过滤掉某些列表,因为它们不可行。例如,列表[4]是不可能的,因为(2,3(不能是没有(1(的列表。如何根据组合规则集进行过滤,例如删除列表中没有 2 和 3 的组合?

我们可以借用这个答案中的方法来查找向量列表中的向量并将其包装在我们自己的函数中。

library(partitions)
p = listParts(3)
detect = function(p, pattern) {
  Position(function(x) identical(x, pattern), p, nomatch = 0) > 0
}
test = sapply(p, detect, pattern = 2:3)
p[!test]
# [[1]]
# [1] (1,2,3)
# 
# [[2]]
# [1] (1,3)(2)
# 
# [[3]]
# [1] (1,2)(3)
# 
# [[4]]
# [1] (1)(2)(3)

最新更新