R:检查两行是否使用参考矩阵连接
我有[A,B,C,D]的ID和下面的参考矩阵,它告诉我们哪些ID是连接的。如果它们在单元格中有1或-1,那么我们可以说它们是连接的,因此从这个矩阵我们可以说“A”与“B”相连,“C”同样,所有连接的ID都在下面的矩阵中表示R:检查两行是否使用参考矩阵连接,r,matrix,machine-learning,svd,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 b10101 C-100 D 0 1 0 0 现在,我有了第二个矩阵,其中包含ID作为所有ID子集的行。此矩阵的列不是ID。 #X1 X2 X3 A 1.51.60.7 D 0.9 1.3 1.4 C 0.7 1.1 1.8 现在我想找到
#A B C D
A 0 1-1 0
b10101
C-100
D 0 1 0 0
现在,我有了第二个矩阵,其中包含ID作为所有ID子集的行。此矩阵的列不是ID。#X1 X2 X3
A 1.51.60.7
D 0.9 1.3 1.4
C 0.7 1.1 1.8
现在我想找到第二个矩阵中的哪些行是使用第一个参考矩阵连接的。我希望创建另一个矩阵,该矩阵中有第二个矩阵的行,但应该知道它们是否连接到第一个矩阵。我希望得到如下矩阵作为我的结果。#A D C
零零一
D 0 0 0
C 1 0 0
请建议我如何在R中实现这一点?我在行名上使用了匹配。让我知道这是否适合你/如果你有任何问题
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
matrix1按预期完美运行。非常感谢你。