检查矩阵的行是否都相同

Check if rows of matrix are all the same

m1 = matrix(c(2,1,4,3,5,6),ncol=3)
m2 = matrix(c(1,2,3,4,6,5),ncol=3)
m1==m2

我需要证明 m1=m2 因为它们的行是相同的。有什么办法吗?

如果我们需要单个 TRUE/FALSE 作为输出,请在 order 数据集之一的行之后使用 all.equalidentical(或两者 - 如果两者均未订购。在此示例中,'m2' 已订购)

all.equal( m1[do.call(order, as.data.frame(m1)),], m2)

如果每一行都应该 return TRUE/FALSE,请创建条件 rowSums

rowSums(m1[do.call(order, as.data.frame(m1)),] == m2) == ncol(m2) 

您可以使用 setdiff() 来实现,您将行视为集合并计算它们的差异,即

length(setdiff(data.frame(t(m1)),data.frame(t(m2))))==0

这样

> length(setdiff(data.frame(t(m1)),data.frame(t(m2))))==0
[1] TRUE