[R] Match numeric vector against rows in a matrix?

Petr Savicky savicky at praha1.ff.cuni.cz
Fri Jan 7 11:10:32 CET 2011


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

Petr Savicky.



More information about the R-help mailing list