[R] union of lists

Peter Dalgaard BSA p.dalgaard at biostat.ku.dk
Wed Apr 17 15:41:55 CEST 2002


Agustin Lobo <alobo at ija.csic.es> writes:

> I'm now using a for loop and applying
> union() to each pair of vectors, but is
> there a faster way avoiding the for ?

Not faster, I think. Maybe neater, using something like

lapply(seq(along=l1), function(i)union(l1[[i]],l2[[i]]))

or (with napply from an earlier post of mine)

napply(l1,l2,FUN=union)

where

napply <-
function(..., FUN) {
   x <- list(...)
   lens <- sapply(x,length)
   len <- max(lens)
   if (any(lens != len))
      x <- lapply(x, rep, length=len)
   tuples <- lapply(seq(length=len), function(i)lapply(x,"[", i))
   lapply(tuples, function(t)eval(as.call(c(FUN,t))))
}

-- 
   O__  ---- Peter Dalgaard             Blegdamsvej 3  
  c/ /'_ --- Dept. of Biostatistics     2200 Cph. N   
 (*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)             FAX: (+45) 35327907
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._



More information about the R-help mailing list