[R] detect repeated number in a vector

Duncan Murdoch murdoch at stats.uwo.ca
Wed Oct 8 22:23:10 CEST 2008


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



More information about the R-help mailing list