On 08/10/2008 2:36 PM, liujb wrote:
Dear R users,

I have this vector that consists numeric numbers. Is there a command that
detects the repeated numbers in a vector and returns the index of the
repeated numbers (or the actual numbers)? For example, v <- c(3,4,5,7,4).
The command would return me index 2 and 5 (or the repeated number, 4).

duplicated() comes close, but the first occurence doesn't count as a duplication:

> duplicated(v)
[1] FALSE FALSE FALSE FALSE  TRUE

To convert into values, you can index v by it:

> v[duplicated(v)]
[1] 4

and to find which indices are duplicated,

> indices <- seq_along(v)
> indices[duplicated(v)]
[1] 5

If you really want to include the the first one, you can do something like:

> indices[ v %in% v[duplicated(v)] ]
[1] 2 5


Duncan Murdoch

______________________________________________
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