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

______________________________________________
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.

Reply via email to