且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

R中矩阵的成对差的计数数目

更新时间:2023-12-01 12:06:34

您可以尝试combn

 v1 <- combn(1:nrow(m1), 2, FUN=function(x) sum(m1[x[1],]!= m1[x[2],]))
 v1 
 #[1] 2 1 3 1 3 2
 sum(v1)
 #[1] 12

如果需要matrix输出

m2 <- outer(1:nrow(m1), 1:nrow(m1), FUN=Vectorize(function(x,y)
           sum(m1[x,]!=m1[y,])))

dimnames(m2) <- rep(list(LETTERS[1:4]),2)
m2[lower.tri(m2)] <- 0
m2
#  A B C D
#A 0 2 1 3
#B 0 0 1 3
#C 0 0 0 2
#D 0 0 0 0

数据

 m1 <- structure(c(0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 
 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 
 0L, 0L, 0L), .Dim = c(4L, 8L))