如何从 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
我有一个形式的向量:
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