[R] More elegant way of excluding rows with equal values in any 2 columns?

David Winsemius dwinsemius at comcast.net
Mon Sep 21 21:05:10 CEST 2009


On Sep 21, 2009, at 2:14 PM, Dimitri Liakhovitski wrote:

> Hello, dear R-ers!
>
> I built a data frame "grid" (below) with 4 columns. I want to exclude
> all rows that have equal values in ANY 2 columns. Here is how I am
> doing it:
>
> index<-expand.grid(1:4,1:4,1:4,1:4)
> dim(index)
> # Deleting rows that have identical values in any two columns (1  
> line of code):
> index<-index[!(index$Var1==index$Var2)&!(index$Var1==index$Var3)&! 
> (index$Var1==index$Var4)&!(index$Var2==index$Var3)&!(index 
> $Var2==index$Var4)&!(index$Var3==index$Var4),]

What "worked" seems longer that it needs to be, but here is where I  
ended up:

index[sapply(apply(index, 1, unique), function(x) length(x)==4), ]

Same output as:
library(e1071)
permutations(4)


David Winsemius, MD
Heritage Laboratories
West Hartford, CT




More information about the R-help mailing list