R 检查矩阵的行是否都相同

R 检查矩阵的行是否都相同,r,equals,R,Equals,我需要显示m1=m2,因为它们的行是相同的。有什么办法吗?如果我们需要一个TRUE/FALSE作为输出,请在对其中一个数据集的行进行排序后使用all.equal或idential(或两者-如果两者都没有排序。在本例中,“m2”已经排序) 如果它应该为每一行返回TRUE/FALSE,则使用rowSums all.equal( m1[do.call(order, as.data.frame(m1)),], m2) 您可以使用setdiff()进行设置,将行视为集合并计算它们的差异,即 rowSum

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

如果我们需要一个TRUE/FALSE作为输出,请在对其中一个数据集的行进行排序后使用
all.equal
idential
(或两者-如果两者都没有排序。在本例中,“m2”已经排序)

如果它应该为每一行返回TRUE/FALSE,则使用
rowSums

all.equal( m1[do.call(order, as.data.frame(m1)),], m2)
您可以使用
setdiff()
进行设置,将行视为集合并计算它们的差异,即

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

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

我认为您需要
all.equal(m1[do.call(order,as.data.frame(m1)),],m2)
这是一个只有两列的简化情况。如果还有更多,我无法根据第一列对列进行排序。它仍然有效吗?它仍然有效。您期望一个真/假还是每行真/假。在这种情况下,
rowSums(m1[do.call(order,as.data.frame(m1)),]==m2==ncol(m2)[1]真的
谢谢,太好了!
length(setdiff(data.frame(t(m1)),data.frame(t(m2))))==0
> length(setdiff(data.frame(t(m1)),data.frame(t(m2))))==0
[1] TRUE