[R] Vector comparison to matrix

Ravi Varadhan rvaradha at jhsph.edu
Mon Aug 15 15:49:09 CEST 2005


Hi Todd,

Here is a function that was suggested to me by Gabor Grothendieck.  This
function counts the number of times each row of a matrix B occurs in another
matrix A.

rowmatch.count <- function(a,b) { 
    f <- function(...) paste(..., sep=":")
    a2 <- do.call("f", as.data.frame(a))
    b2 <- do.call("f", as.data.frame(b))
    c(table(c(a2,unique(b2)))[b2] - 1)
}

If you are interested in finding the number of occurrences of a vector "b"
instead, you can call this function as follows:

rowmatch.count(A,t(as.matrix(b))

Hope this is helps,
Ravi.


> -----Original Message-----
> From: r-help-bounces at stat.math.ethz.ch [mailto:r-help-
> bounces at stat.math.ethz.ch] On Behalf Of Todd Remund
> Sent: Monday, August 15, 2005 1:13 AM
> To: r-help at stat.math.ethz.ch
> Subject: [R] Vector comparison to matrix
> 
> I am looking for a fast way to count the number of rows in a matrix are
> identical to a pattern vector.  For example, if I am interested in
> counting
> the number of row vectors in a matrix that are identical to (1,2,3) what
> would I do?  I have tried the identical statement in a loop but this is
> far
> too slow.  I have a very large matrix and need to avoid loops at all
> costs.
> Thanks for any help.
> Todd Remund
> 
> ______________________________________________
> 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




More information about the R-help mailing list