Yes -- much better than mine. I didn't know about the MARGIN argument of duplicated().
-- Bert On Wed, Nov 7, 2018 at 10:32 PM Jeff Newmiller <jdnew...@dcn.davis.ca.us> wrote: > Perhaps > > which( ! duplicated( m, MARGIN=1 ) ) > > ? (untested) > > On November 7, 2018 9:20:57 PM PST, Bert Gunter <bgunter.4...@gmail.com> > wrote: > >A mess -- due to your continued use of html formatting. > > > >But something like this may do what you want (hard to tell with the > >mess): > > > >> m <- matrix(1:16,nrow=8)[rep(1:8,2),] > >> m > > [,1] [,2] > > [1,] 1 9 > > [2,] 2 10 > > [3,] 3 11 > > [4,] 4 12 > > [5,] 5 13 > > [6,] 6 14 > > [7,] 7 15 > > [8,] 8 16 > > [9,] 1 9 > >[10,] 2 10 > >[11,] 3 11 > >[12,] 4 12 > >[13,] 5 13 > >[14,] 6 14 > >[15,] 7 15 > >[16,] 8 16 > >> vec <- apply(m,1,paste,collapse="-") ## converts rows into character > >vector > >> vec > >[1] "1-9" "2-10" "3-11" "4-12" "5-13" "6-14" "7-15" "8-16" "1-9" > >"2-10" > >"3-11" "4-12" "5-13" "6-14" > >[15] "7-15" "8-16" > >> ## Then maybe: > >> tapply(seq_along(vec),vec, I) > >$`1-9` > >[1] 1 9 > > > >$`2-10` > >[1] 2 10 > > > >$`3-11` > >[1] 3 11 > > > >$`4-12` > >[1] 4 12 > > > >$`5-13` > >[1] 5 13 > > > >$`6-14` > >[1] 6 14 > > > >$`7-15` > >[1] 7 15 > > > >$`8-16` > >[1] 8 16 > > > >> ## gives the row numbers for each unique row > > > >There may well be slicker ways to do this -- if this is actually what > >you > >want to do. > > > >-- Bert > > > > > > > >On Wed, Nov 7, 2018 at 7:56 PM li li <hannah....@gmail.com> wrote: > > > >> Hi all, > >> I use the following example to illustrate my question. As you can > >see, > >> in matrix C some rows are repeated and I would like to find the > >indices of > >> the rows corresponding to each of the distinct rows. > >> For example, for the row c(1,9), I have used the "which" function > >to > >> identify the row indices corresponding to c(1,9). Using this > >approach, in > >> order to cover all distinct rows, I need to use a for loop. > >> I am wondering whether there is an easier way where a for loop can > >be > >> avoided? > >> Thanks very much! > >> Hanna > >> > >> > >> > >> > A <- matrix(c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16),8,2)> B <- > >> rbind(A,A,A)> C <- as.data.frame(B[sample(nrow(B)),])> C V1 V2 > >> 1 1 9 > >> 2 2 10 > >> 3 3 11 > >> 4 5 13 > >> 5 7 15 > >> 6 6 14 > >> 7 4 12 > >> 8 3 11 > >> 9 8 16 > >> 10 5 13 > >> 11 7 15 > >> 12 2 10 > >> 13 1 9 > >> 14 8 16 > >> 15 1 9 > >> 16 3 11 > >> 17 7 15 > >> 18 4 12 > >> 19 2 10 > >> 20 6 14 > >> 21 4 12 > >> 22 8 16 > >> 23 5 13 > >> 24 6 14> T <- unique(C)> T V1 V2 > >> 1 1 9 > >> 2 2 10 > >> 3 3 11 > >> 4 5 13 > >> 5 7 15 > >> 6 6 14 > >> 7 4 12 > >> 9 8 16> > i <- 1 > which(C[,1]==T[i,1]& > >> C[,2]==T[i,2])[1] 1 13 15 > >> > >> [[alternative HTML version deleted]] > >> > >> ______________________________________________ > >> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > >> 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]] > > > >______________________________________________ > >R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > >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. > > -- > Sent from my phone. Please excuse my brevity. > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.