如何从 R 中的单个向量创建二进制矩阵?

How to create a binary matrix from single vector in R?

我有一个形式的向量:

myVec <- c("A", "A", "A", "B", "B", "C", "A")

我想创建的是一个关系矩阵,其中 myVec 作为矩阵的列和行,当列值和行值相等时为 1。

根据上面的示例向量,结果矩阵为:

   A  A  A  B  B  C  C  A
A  1  1  1  0  0  0  0  1
A  1  1  1  0  0  0  0  1
A  1  1  1  0  0  0  0  1
B  0  0  0  1  1  0  0  0
B  0  0  0  1  1  0  0  0
C  0  0  0  0  0  1  1  0
C  0  0  0  0  0  1  1  0
A  1  1  1  0  0  0  0  1

如果行名和列名显示为 (A1, A2, A3, B1, ...) 或其他 'unique' 配置也没关系。

我确信必须有一个简单的解决方案来解决这个问题,但它让我望而却步。我怎样才能做到这一点?谢谢!

试试这个

> +outer(myVec, myVec, `==`)
     [,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,]    1    1    1    0    0    0    1
[2,]    1    1    1    0    0    0    1
[3,]    1    1    1    0    0    0    1
[4,]    0    0    0    1    1    0    0
[5,]    0    0    0    1    1    0    0
[6,]    0    0    0    0    0    1    0
[7,]    1    1    1    0    0    0    1