# [R] comparing rows

markleeds at verizon.net markleeds at verizon.net
Mon Nov 10 18:15:51 CET 2008

```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:

 TRUE
 FALSE
 FALSE
 FALSE
 FALSE
 TRUE
 FALSE
 FALSE
 FALSE
 FALSE
 TRUE
 FALSE
 FALSE
 FALSE
 FALSE
 FALSE

but I need one vector like this:

 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,])
})
}))
))

```