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) 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 Any ideas? thanks -- View this message in context: http://www.nabble.com/Make-one-vector-from-matrix-comparison-tp20421761p20421761.html Sent from the R help mailing list archive at Nabble.com.
Try: c(inner(testmat1, testmat2, setequal)) where inner is defined here: http://finzi.psych.upenn.edu/R/Rhelp02a/archive/70762.html On Mon, Nov 10, 2008 at 10:11 AM, Chris82 <rubenbauar at gmx.de> wrote:> > 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) > > 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 > > Any ideas? > > thanks > -- > View this message in context: http://www.nabble.com/Make-one-vector-from-matrix-comparison-tp20421761p20421761.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help at 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. >
Hi Chris82, Yes. Try this: 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) b=NULL for (i in 1:4){ for (j in 1:4){ b <- c(b,setequal(testmat1[j,],testmat2[i,])) b } } b HTH, Jorge On Mon, Nov 10, 2008 at 10:11 AM, Chris82 <rubenbauar@gmx.de> wrote:> > 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) > > 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 > > Any ideas? > > thanks > -- > View this message in context: > http://www.nabble.com/Make-one-vector-from-matrix-comparison-tp20421761p20421761.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > 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. >[[alternative HTML version deleted]]