The function duplicated returns a logical vector indicating which elements x are duplicates, but will not include the very first appearance of subsequently duplicated elements. AllDuplicated returns an index vector of ALL the values in x which are involved in ties.
So !AllDuplicated can be used to determine all elements of x, which appear exactly once (thus with frequency 1).

AllDuplicated(x)

Arguments

x

vector of any type.

Value

logical vector of the same dimension as x.

Author

Andri Signorell <andri@signorell.net>

See also

unique returns a unique list of all values in x
duplicated returns an index vector flagging all elements, which appeared more than once (leaving out the first appearance!)
union(A, B) returns a list with the unique values from A and B
intersect returns all elements which appear in A and in B
setdiff(A, B) returns all elements appearing in A but not in B
setequal(A, B) returns TRUE if A contains exactly the same elements as B
split(A, A) returns a list with all the tied values in A (see examples)

Examples

x <- c(1:10, 4:6)

AllDuplicated(x)
#>  [1] FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE
#> [13]  TRUE

# compare to:
duplicated(x)
#>  [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
#> [13]  TRUE

x[!AllDuplicated(x)]
#> [1]  1  2  3  7  8  9 10

# union, intersect and friends...
A <- c(sort(sample(1:20, 9)),NA)
B <- c(sort(sample(3:23, 7)),NA)

# all elements from A and B (no duplicates)
union(A, B)
#>  [1]  1  4 11 12 15 16 18 19 20 NA 13 17 23
# all elements appearing in A and in B
intersect(A, B)
#> [1]  4 12 18 20 NA
# elements in A, but not in B
setdiff(A, B)
#> [1]  1 11 15 16 19
# elements in B, but not in A
setdiff(B, A)
#> [1] 13 17 23
# Does A contain the same elements as B?
setequal(A, B)
#> [1] FALSE


# Find ties in a vector x
x <- sample(letters[1:10], 20, replace=TRUE)
ties <- split(x, x)

# count tied groups
sum(sapply(ties, length) > 1)
#> [1] 5

# length of tied groups
(x <- sapply(ties, length))[x>1]
#> b c e f h 
#> 3 3 4 2 4 

# by means of table
tab <- table(x)
tab[tab>1]
#> x
#> 1 3 4 
#> 4 2 2 

# count elements involved in ties
sum(tab>1)
#> [1] 3
# count tied groups
sum(tab[tab>1])
#> [1] 8