R:使用参考矩阵检查是否连接了两行

时间:2017-04-30 03:29:34

标签: r matrix machine-learning svd

我有[A,B,C,D]的ID和下面的参考矩阵,它告诉我们连接了哪些ID。如果它们在单元格中有1或-1,那么我们可以说它们是因此,从这个矩阵我们可以说'A'与'B'和'C'连接同样所有连接的ID都在下面的矩阵中表示
# A B C D A 0 1 -1 0 B 1 0 0 1 C -1 0 0 0 D 0 1 0 0

现在我有第二个矩阵,其中包含ID作为所有ID子集的行。此矩阵的列不是ID # X1 X2 X3 A 1.5 1.6 0.7 D 0.9 1.3 1.4 C 0.7 1.1 1.8

现在我想找到第二个矩阵中的哪些行使用第一个参考矩阵连接。我希望创建另一个矩阵,其中包含第二个矩阵的行,但应该判断它们是否连接是否引用第一个矩阵。我希望下面有一个矩阵作为我的结果 # A D C A 0 0 1 D 0 0 0 C 1 0 0
请建议我如何在R中实现这一目标?

1 个答案:

答案 0 :(得分:0)

我在rownames上使用了匹配。如果您有任何疑问,请告诉我。

matrix1 <- matrix(c(0, 1, -1, 0, 1, 0, 0, 1, -1, 0, 0, 0, 0, 1, 0, 0), ncol = 4, byrow = TRUE, dimnames = list(LETTERS[1:4], LETTERS[1:4]))
matrix1
   A B  C D
A  0 1 -1 0
B  1 0  0 1
C -1 0  0 0
D  0 1  0 0

matrix2 <- matrix(c(1.5, 1.6, 0.7, 0.9, 1.3, 1.4, 0.7, 1.1, 1.8), ncol = 3, byrow = TRUE, dimnames = list(c("A","D","C"), paste0("X",1:3)))
matrix2
   X1  X2  X3
A 1.5 1.6 0.7
D 0.9 1.3 1.4
C 0.7 1.1 1.8

matched_rows <- match(rownames(matrix2), rownames(matrix1))
matched_cols <- match(rownames(matrix2), colnames(matrix1))
matrix3 <- abs(matrix1[matched_rows, matched_cols])
matrix3
  A D C
A 0 0 1
D 0 0 0
C 1 0 0