[R] select unique by multiple values

arun smartpink111 at yahoo.com
Wed Oct 9 15:56:07 CEST 2013



Hi,

Not sure about your expected output.

xyz<- list(x=c(8,6,9,0,0,3,9,7,1,9),y=c(1,2,9,5,1,2,0,9,2,9),z=c(5,6,9,0,5,1,1,7,3,4))
indx<-sort(unique(unlist(lapply(xyz[1:2],function(u) which(!duplicated(u))),use.names=FALSE)))
 xyz[1:2]<-lapply(xyz[1:2],function(u) u[!duplicated(u)])
 xyz[3]$z<- xyz[3]$z[indx]
 xyz
#$x
#[1] 8 6 9 0 3 7 1
#
#$y
#[1] 1 2 9 5 0
#
#$z
#[1] 5 6 9 0 1 1 7 3

A.K.


New to R here.  Lots of fun.  Still rather green though. 

I'd like to select unique items from a list that looks like this (for 
example): 

> xyz 
$x 
 [1] 8 6 9 0 0 3 9 7 1 9 
$y 
 [1] 1 2 9 5 1 2 0 9 2 9 
$z 
 [1] 5 6 9 0 5 1 1 7 3 4 

I'd like to select unique (x,y), while preserving association with z 
values.  When there are duplicate (x,y) pairs, it doesn't really matter 
which (x,y,z) triplet gets preserved - selecting the first would be fine, 
but any other way to do it would be fine also.  It /would/ be handy to also 
get a list of the rejected triplets, if that's possible.  Ideas? 

Thanks! 

R



More information about the R-help mailing list