选择所有可能的组合来配对 R 中两个向量的元素

Choosing all possible combinations for pairing the elements of two vectors in R

我有一个数学上很难掌握的问题。所以希望我可以通过这个简化的示例了解我想做的事情:

假设我必须使用长度为 n = 3 的向量。

a <- 1:3
b <- 1:3

我想知道我有多少次能够在没有替换的情况下绘制 a 的三个元素和 b 的元素并将它们配对,其中顺序无关紧要,并得到一个唯一的集合。一对 (1 2) 与 (2 1) 不同,但我不想有这样的东西

1 2

2 1

1 3,

因为我不希望任何元素(按列)重复。然而,在该示例中,1 在第一列中出现了两次。

两组有效配对是

1 1

2 2

3 3

1 3

2 2

3 1.

我已经弄清楚它不是 n*n 选择 k,这将是 84,就像在没有替换的无序采样问题中一样。

最终目标是从长度为 n = 20 的两个向量中计算 20 个组合的独特对数。

如果你从更简单的东西开始,比如两个向量 1,2 那么组合是 2! = 2,因为 1 可以与 1,2 中的任何一个匹配(2 个选择) 和 2 肯定会得到剩下的东西(0 个选择),比如

1 1 | 1 2
2 2 | 2 1

如果考虑两个向量1,2,3那么组合就是3! = 3*2 = 6,因为1可以和1,2,3中的任意一个匹配(3个选项),那么2可以与剩余的 2 个数字中的任何一个(最上面的 2 个选项)匹配,然后 3 肯定会得到剩余的任何数字(0 个选择),例如:

1 1 | 1 1 | 1 2 | 1 2 | 1 3 | 1 3
2 2 | 2 3 | 2 1 | 2 3 | 2 2 | 2 1
3 3 | 3 2 | 3 3 | 3 1 | 3 1 | 3 2 

所以对于 1,2,3,...,20 的两个向量,您将得到 20!选项。