我有一个大数据集,但我可以通过一个简单的例子来解释.例如,我有一个矩阵"x"
x<- matrix(c(3,3,3,4,3,3,5,5,5), nrow=3, byrow=T)
现在我需要第二行,其中"x"不是唯一条目.第一行和第三行在列的意义上是相等的.
提前问候并表示感谢,
Iftikhar Ahmad
你也可以利用这样一个事实,即相等意味着标准偏差总是为0.不幸的是,我们必须将这些0转换为逻辑表达式(下面)或者使用as.logical.
x[apply(x, 1, sd) > 0, ]
Run Code Online (Sandbox Code Playgroud)
更新
做了一些@joran和我的解决方案的基准测试.我失去了:(
x <- matrix(sample(3:5,30000,T), ncol=3)
system.time(x2 <- x[apply(x,1,sd) > 0, ])
user system elapsed
0.960 0.000 0.961
system.time(x2 <- x[apply(x,1,FUN=function(r){return(length(unique(r)))}) > 1,])
user system elapsed
0.470 0.000 0.465
Run Code Online (Sandbox Code Playgroud)
但...
如果我们做一个具有类似主题的完全矢量化版本,我们可以将两者都吹出水面
system.time(x2 <- x[rowSums(abs(x - rowMeans(x))) != 0, ])
user system elapsed
0.000 0.000 0.001
Run Code Online (Sandbox Code Playgroud)
这是你在寻找的东西:
x[apply(x,1,FUN=function(r){return(length(unique(r)))}) > 1,]
Run Code Online (Sandbox Code Playgroud)
这将选择具有多个唯一值的行.