问题描述
||
我有一个大数据集,但我可以通过一个简单的例子进行解释。例如我有一个矩阵“ 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,]
这将选择其中包含多个唯一值的行。