> -----Original Message----- > From: r-help-boun...@r-project.org > [mailto:r-help-boun...@r-project.org] On Behalf Of Petr Savicky > Sent: Friday, January 07, 2011 2:11 AM > To: r-help@r-project.org > Subject: Re: [R] Match numeric vector against rows in a matrix? > > On Wed, Jan 05, 2011 at 07:16:47PM +0000, Kevin Ummel wrote: > > Two posts in one day is not a good day...and this question > seems like it should have an obvious answer: > > > > I have a matrix where rows are unique combinations of 1's and 0's: > > > > > combs=as.matrix(expand.grid(c(0,1),c(0,1))) > > > combs > > Var1 Var2 > > [1,] 0 0 > > [2,] 1 0 > > [3,] 0 1 > > [4,] 1 1 > > > > I want a single function that will give the row index > containing an exact match with vector x: > > > > > x=c(0,1) > > > > The solution needs to be applied many times, so I need > something quick -- I was hoping a base function would do it, > but I'm drawing a blank. > > If the matrix can have different number of columns, then > also the following can be used > > combs <- as.matrix(expand.grid(c(0,1),c(0,1),c(0,1))) > x <- c(0,1,1) > which(rowSums(combs != rep(x, each=nrow(combs))) == 0) # [1] 7
If the combs matrix always has that form, why not dispense with it and treat x as the binary expansion of the row number (+1)? > 1 + sum( 2^(seq_along(x)-1) * x ) [1] 7 Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com > Petr Savicky. > > ______________________________________________ > R-help@r-project.org 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@r-project.org 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.