检查矩阵的行是否都相同
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.equal
或 identical
(或两者 - 如果两者均未订购。在此示例中,'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
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.equal
或 identical
(或两者 - 如果两者均未订购。在此示例中,'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