# Re: [R] Lists and outer() like functionality?

From: Jason Turner (jasont@indigoindustrial.co.nz)
Date: Tue 11 May 2004 - 00:45:48 EST

```Message-id: <54783.203.9.176.60.1084200348.squirrel@webmail.maxnet.co.nz>

```

"David Orme" <d.orme@imperial.ac.uk> wrote:
...
> I'm have a list of integer vectors and I want to perform an outer()
> like operation on the list. As an example, take the following list:
>
> mylist <- list(1:5,3:9,8:12)
>
> A simple example of the kind of thing I want to do is to find the sum
> of the shared numbers between each vector to give a result like:
>
> result <- array(c(15,12,0,12,42,17,0,17,50), dim=c(3,3))
>
> Two for() loops is the easiest way but I wondered if there was a
> neater/faster solution.
>
> mylist.len <- length(mylist)
> ind <- 1:mylist.len
> result <- array(NA, dim=c(mylist.len,mylist.len))
> for(x in ind){
> for(y in ind){
> result[x,y] <- sum(mylist[[x]][test[[x]] %in% test[[y]]])
> }
> }
>

I'm having a hard time figuring out what you want. Who is this mystery
object "test"? When I drop "test" from the text, and use:

result[x,y] <- sum(mylist[[x]] %in% mylist[[y]])

It doesn't give a syntax error, but the result is nothing like the one you
posted above.

As a style point, ind <- seq(along=mylist) is a bit more foolproof in the
case of empty lists being accidentally passed to the code (been bitten
that way once or twice).

Cheers

Jason

______________________________________________
R-help@stat.math.ethz.ch mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help