Here is one way of doing it: > compMat2 <- function(A, B) { # rows of B present in A + B0 <- B[!duplicated(B), ] + na <- nrow(A); nb <- nrow(B0) + AB <- rbind(A, B0) + ab <- duplicated(AB)[(na+1):(na+nb)] + return(sum(ab)) + } > > > set.seed(8237) > A <- matrix(sample(1:1000, 2*67420, replace=TRUE), 67420, 2) > B <- matrix(sample(1:1000, 2*59199, replace=TRUE), 59199, 2) > > system.time({ + # convert for comparison + A.1 <- apply(A, 1, function(x) paste(x, collapse = ' ')) + B.1 <- apply(B, 1, function(x) paste(x, collapse = ' ')) + count <- sum(B.1 %in% A.1) + }) user system elapsed 1.77 0.00 1.79 > > > count [1] 3905 >
On Fri, Dec 2, 2011 at 2:46 PM, Hans W Borchers <hwborch...@googlemail.com> wrote: > Michael Kao <mkao006rmail <at> gmail.com> writes: > >> > Well, taking a second look, I'd say it depends on the exact formulation. > > In the applications I have in mind, I would like to count each occurrence > in B only once. Perhaps the OP never thought about duplicates in B > > Hans Werner > >> >> Here is an example based on the duplicated function >> >> test.mat1 <- matrix(1:20, nc = 5) >> >> test.mat2 <- rbind(test.mat1[sample(1:5, 2), ], matrix(101:120, nc = 5)) >> >> compMat <- function(mat1, mat2){ >> nr1 <- nrow(mat1) >> nr2 <- nrow(mat2) >> mat2[duplicated(rbind(mat1, mat2))[(nr1 + 1):(nr1 + nr2)], ] >> } >> >> compMat(test.mat1, test.mat2) >> > > ______________________________________________ > 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. -- Jim Holtman Data Munger Guru What is the problem that you are trying to solve? Tell me what you want to do, not how you want to do it. ______________________________________________ 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.