From: Sundar Dorai-Raj <sundar.dorai-raj_at_pdf.com>

Date: Sat 22 Jul 2006 - 04:02:11 EST

*>
*

*> $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:
*

*>
*

*>
*

*>
*

*> [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:
*

*>
*

*>
*

*>
*

*> $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:

*>
*

*>
*

*>
*

> 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.
*

}

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

Date: Sat 22 Jul 2006 - 04:02:11 EST

Georg Otto wrote:

*> Hi,
**>
*

> i have a list of several vectors, for example:

*>
**>
*

>>vectorlist

> [1] "e" "f" "g"

>>intersect(vectorlist[[1]], vectorlist[[2]])

> I would like to use grep to get the vectors by their names matching an

>>vectorlist[grep ("vector.a", names(vectorlist))]

> 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

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.
*