David Orme <d.orme <at> imperial.ac.uk> writes: : : > : > outer() generally works by expanding out the lists like : > : > Y <- rep(y,length(x)) : > X <- rep(x,each=length(y)) # or maybe it's vice versa, never mind... : > FUN(X,Y,extras) : > : > and then adds dims and dimnames. If FUN vectorizes, this is the : > efficient way, but it does not in your case and the rep()s are : > probably not cheap when lists are involved. : > : > you might try this sort of stuff: : > : > myfunc2 <- function(i,j) : > mapply(function(i,j) : > : > phylo.overlap(assemblages[[i]],assemblages[[j]],parrot.cm), : > i,j) : > ind <- seq(along=assemblages) : > outer(ind,ind,myfunc2) : > : : That now runs at about the same speed as the loops (although the loops : still just have the edge). : : Many thanks for the suggestions. : : David
Actually if you are debating between for and outer, note that one could implement this without for and without outer: sapply(mylist,function(x)sapply(mylist,function(y)sum(intersect(x,y))) ______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
