[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