我正在尝试创建列表的子集,涵盖所有可能的组合,条件是最终输出与初始列表的长度相同并且没有重复元素。
对于列表:
X <- c("A","B","C","D")
所有非空子集都是(我们称之为Y
):
[('A'), ('B'), ('C'), ('D'), ('A', 'B'), ('A', 'C'), ('A', 'D'), ('B', 'C'),
('B', 'D'), ('C', 'D'), ('A', 'B', 'C'), ('A', 'B', 'D'), ('A', 'C', 'D'),
('B', 'C', 'D'), ('A', 'B', 'C', 'D')]
我正在寻找的是组合中Y
的元素是不同值的组合X
。
一些可接受的组合是:
(('A',), ('B',), ('C', 'D'))
(('A',), ('C',), ('B', 'D'))
(('A',), ('D',), ('B', 'C'))
(('B',), ('C',), ('A', 'D'))
(('B',), ('D',), ('A', 'C'))
(('C',), ('D',), ('A', 'B'))
我已经尝试估计所有可能的组合,Y
然后得到每个组合的不同值的长度。
如果是,length(distinct elements of combination) = length(X)
那么我保留该组合。但这无论如何都不是最佳方法,也不涵盖重复的场景。
此外,在我的真实世界场景中,我在X
.