# [R] intersect of list elements

Gabor Grothendieck ggrothendieck at gmail.com
Fri Jul 21 20:18:03 CEST 2006

```The following assumes that within each component of vectorlist
the vector elements are unique. In that case the first two lines
define vectorlist and perform the grep, as in your post.  Elements
of the intersection must occur n times where n is the number
of components of vectorlist that match the grep and those
elements are extracted in the last line.

# from your post
vectorlist <- list(vector.a.1 = c("a", "b", "c"), vector.a.2 = c("a",
"b", "d"), vector.b.1. = c("e", "f", "g"))
idx <- grep("vector.a", names(vectorlist))

# get intersection
names(which(table(unlist(vectorlist[idx])) == length(idx)))

On 7/21/06, Georg Otto <georg.otto at tuebingen.mpg.de> wrote:
>
> Hi,
>
> i have a list of several vectors, for example:
>
> > vectorlist
> \$vector.a.1
>  "a" "b" "c"
>
> \$vector.a.2
>  "a" "b" "d"
>
> \$vector.b.1
>  "e" "f" "g"
>
>
> I can use intersect to find elements that appear in \$vector.a.1 and
> \$vector.a.2:
>
> > intersect(vectorlist[], vectorlist[])
>  "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
>  "a" "b" "c"
>
> \$vector.a.2
>  "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 at 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.
>

```