如何选择R中矩阵列中不唯一的行

问题描述

|| 我有一个大数据集,但我可以通过一个简单的例子进行解释。例如我有一个矩阵“ x”
x<- matrix(c(3,3,4,5,5),nrow=3,byrow=T)
现在我需要第二行,其中\“ x \”不是唯一的条目。在列的意义上,第一行和第三行相等。 谨在此致谢, Iftikhar艾哈迈德     

解决方法

        您还可以利用一个事实,即相等意味着标准偏差将始终为0。不幸的是,我们必须使用逻辑表达式(如下)或使用“ 1”将这些0转换为逻辑。
x[apply(x,1,sd) > 0,]
更新资料 对@joran和我的解决方案进行了一些基准测试。我的迷路了
x <- matrix(sample(3:5,30000,T),ncol=3)    

system.time(x2 <- x[apply(x,])
user  system elapsed 
0.960   0.000   0.961

system.time(x2 <- x[apply(x,FUN=function(r){return(length(unique(r)))}) > 1,])
user  system elapsed 
0.470   0.000   0.465
但... 如果我们制作一个具有类似主题的完全矢量化版本,我们可以将两者都吹掉
system.time(x2 <- x[rowSums(abs(x - rowMeans(x))) != 0,])
user  system elapsed 
0.000   0.000   0.001
    ,        这是您要找的东西吗?
x[apply(x,]
这将选择其中包含多个唯一值的行。