hi chris: i'm betting that there is a better/shorter more R'ish way to do it ( if someone could provide that, it's appreciated ) but below will get the output in the format you need. the all function tests whether all the elements are equal so you don't need setequal although i guess it's a matter of taste ? as.vector((t(sapply(1:nrow(testmat1),function(.rowindex1) { sapply(1:nrow(testmat2), function(.rowindex2) { all(testmat2[.rowindex2,] == testmat1[.rowindex1,]) }) })) )) #========================================================================== Hello R-users, I have a little problem. I compare each row of a matrix with each row of another matrix. testmat1 <- matrix(c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16), nrow=4) testmat2 <- matrix(c(1,2,3,5,5,6,7,8,9,10,11,12,13,14,15,16), nrow=4) print(testmat1) print(testmat2) Both matrix differs in the last row. Now I create a loop: for (i in (1:4)){ for (j in (1:4)){ b <- (c(setequal(testmat1[j,],testmat2[i,]))) print(b) } } R outputs me the following: [1] TRUE [1] FALSE [1] FALSE [1] FALSE [1] FALSE [1] TRUE [1] FALSE [1] FALSE [1] FALSE [1] FALSE [1] TRUE [1] FALSE [1] FALSE [1] FALSE [1] FALSE [1] FALSE but I need one vector like this: [1] TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE as.vector((t(sapply(1:nrow(testmat1),function(.rowindex1) { sapply(1:nrow(testmat2), function(.rowindex2) { all(testmat2[.rowindex2,] == testmat1[.rowindex1,]) }) })) ))