On 13/11/2018 12:35 AM, Pages, Herve wrote:
Hi,

On 11/12/18 17:08, Duncan Murdoch 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?

I generally use match() for that:

  > v <- c("a", "b", "b", "a")

  > match(v, v)

[1] 1 2 2 1

Yes, this is perfect. Thanks to you (and the private answer I received that suggested the same).

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.

Reply via email to