"I'd like to see a cleverer solution that vectorizes..." and Herve provided it.
Bert Gunter "The trouble with having an open mind is that people keep coming along and sticking things into it." -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) On Mon, Nov 12, 2018 at 9:43 PM Bert Gunter <bgunter.4...@gmail.com> wrote: > It is not clear to what you want for the general case. Perhaps: > > > v <- letters[c(2,2,1,2,1,1)] > > wh <- tapply(seq_along(v),factor(v), '[',1) > > w <- wh[match(v,v[wh])] > > w > b b a b a a > 1 1 3 1 3 3 > > ## and if you want NA's for the first occurences of unique values > > ## of course: > > w[wh] <- NA > > w > b b a b a a > NA 1 NA 1 3 3 > > I'd like to see a cleverer solution that vectorizes and avoids the > tapply(), though. > > Cheers, > Bert > > > > > On Mon, Nov 12, 2018 at 8:33 PM Bert Gunter <bgunter.4...@gmail.com> > wrote: > >> > match(v, unique(v)) >> [1] 1 2 2 1 >> >> Bert Gunter >> >> "The trouble with having an open mind is that people keep coming along >> and sticking things into it." >> -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) >> >> >> On Mon, Nov 12, 2018 at 5:08 PM Duncan Murdoch <murdoch.dun...@gmail.com> >> wrote: >> >>> The duplicated() function gives TRUE if an item in a vector (or row in a >>> matrix, etc.) is a duplicate of an earlier item. But what I would like >>> to know is which item does it duplicate? >>> >>> For example, >>> >>> v <- c("a", "b", "b", "a") >>> duplicated(v) >>> >>> returns >>> >>> [1] FALSE FALSE TRUE TRUE >>> >>> What I want is a fast way to calculate >>> >>> [1] NA NA 2 1 >>> >>> or (equally useful to me) >>> >>> [1] 1 2 2 1 >>> >>> The result should have the property that if result[i] == j, then v[i] == >>> v[j], at least for i != j. >>> >>> Does this already exist somewhere, or is it easy to write? >>> >>> Duncan Murdoch >>> >>> ______________________________________________ >>> 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.