Re: [R] intersect of list elements

From: Sundar Dorai-Raj <sundar.dorai-raj_at_pdf.com>
Date: Sat 22 Jul 2006 - 04:02:11 EST

Georg Otto wrote:
> Hi,
>
> i have a list of several vectors, for example:
>
>

>>vectorlist

>
> $vector.a.1
> [1] "a" "b" "c"
>
> $vector.a.2
> [1] "a" "b" "d"
>
> $vector.b.1
> [1] "e" "f" "g"
>
>
> I can use intersect to find elements that appear in $vector.a.1 and
> $vector.a.2:
>
>
>>intersect(vectorlist[[1]], vectorlist[[2]])

>
> [1] "a" "b"
>
>
> I would like to use grep to get the vectors by their names matching an
> expression and to find the intersects between those vectors. For the
> first step:
>
>
>>vectorlist[grep ("vector.a", names(vectorlist))]

>
> $vector.a.1
> [1] "a" "b" "c"
>
> $vector.a.2
> [1] "a" "b" "d"
>
>
> Unfortunately, I can not pass the two vectors as argument to intersect:
>
>
>>intersect(vectorlist[grep ("vector.a", names(vectorlist))])

>
> Error in unique(y[match(x, y, 0)]) : argument "y" is missing, with no default
>
> I am running R Version 2.3.1 (2006-06-01)
>
>
> Could somone help me to solve this?
>
> Cheers,
>
> Georg
>
> ______________________________________________
> R-help@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

Will this work for you?

vectorlist <- list(vector.a.1 = c("a", "b", "c"),

                    vector.a.2 = c("a", "b", "d"),
                    vector.b.1 = c("e", "f", "g"))

intersect2 <- function(...) {

   args <- list(...)
   nargs <- length(args)
   if(nargs <= 1) {

     if(nargs == 1 && is.list(args[[1]])) {
       do.call("intersect2", args[[1]])
     } else {
       stop("cannot evaluate intersection fewer than 2 arguments")
     }
   } else if(nargs == 2) {
     intersect(args[[1]], args[[2]])
   } else {
     intersect(args[[1]], intersect2(args[-1]))
   }
}

vector.a <- vectorlist[grep ("vector.a", names(vectorlist))] intersect2(vector.a)
intersect2(vectorlist)

HTH, --sundar



R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. Received on Sat Jul 22 04:07:07 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Sat 22 Jul 2006 - 06:15:33 EST.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.