duplicated function
That seems straightforward enough:
x <- c(7, 7, 7, 2, 3, 2) match(x, x)
[1] 1 1 1 4 5 4
ifelse(duplicated(x), match(x, x), 0)
[1] 0 1 1 0 0 4 On Tue, Nov 18, 2014 at 10:40 AM, Duncan Murdoch
<murdoch.duncan at gmail.com> wrote:
On 18/11/2014 10:23 AM, Dennis Fisher wrote:
R 3.1.1
OS X
Colleagues
When I use the duplicated function, I often need to find both the
duplicates and the original element that was duplicated. This can be
accomplished with:
duplicated(OBJECT) | duplicated(OBJECT, fromLast=TRUE)
From my perspective, an improvement in the duplicated function would be
an option that accomplishes this with a single call to the function. This
could either be:
1. a new option: all=TRUE (pick whatever name makes sense)
2. allowing fromLast to take a new value (e.g., NA, in the spirit
of the xpd option in par())
If my suggestion would yield unintended consequences, it can certainly be
ignored.
The duplicated() function is pretty fast, so what's wrong with your original version? If you find it to be too much typing, wouldn't it be simplest to write your own function, e.g. nonunique <- function(x) duplicated(x) | duplicated(x, fromLast=TRUE) ? Something I've wanted more than once is a variation on duplicated that returns the index of the duplicated element, so for example dupindex(c(7,7,7,2,3,2)) would return 0 1 1 0 0 4 or possibly 1 1 1 4 5 4 Duncan Murdoch
______________________________________________ R-help at 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.