Aliases: isReplicated replicates
Keywords:
### ** Examples x <- c(1,1,2,3,4,2,1) x <- base::letters[x] print(x)
[1] "a" "a" "b" "c" "d" "b" "a"
# Identify entries with replicated values reps <- isReplicated(x) print(x[reps])
[1] "a" "a" "b" "b" "a"
stopifnot(x[reps] == replicates(x)) # Identify entries with unique values print(x[!reps])
[1] "c" "d"
stopifnot(x[!reps] == singles(x)) # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Validation # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - x <- c(1,1,2,3,4,2,1) x <- base::letters[x] reps <- isReplicated(x) stopifnot(all(table(x[reps]) > 1)) stopifnot(all(table(x[!reps]) == 1)) stopifnot(all(reps == rev(isReplicated(rev(x))))) stopifnot(all(reps == duplicated(x) | duplicated(x, fromLast=TRUE))) stopifnot(all(reps == !is.element(x, setdiff(x, unique(x[duplicated(x)]))))) stopifnot(all(sort(c(singles(x), replicates(x))) == sort(x))) # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Benchmarking singles() # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - set.seed(0xBEEF) n <- 1e6 x <- sample(1:(n/2), size=n, replace=TRUE) t <- system.time({ s <- isSingle(x) }) print(sum(s))
[1] 135603
t0 <- system.time({ s0 <- !(x %in% x[duplicated(x)]); }) print(t/t0)
user system elapsed 0.8113208 1.3125000 1.0972222
stopifnot(all(s == s0))