ID EN
Miscellaneous

make.unique

R Base 3.6.2

Makes the elements of a character vector unique by appending sequence numbers to duplicates.

Syntax

R
make.unique(names, sep = ".")

Arguments

Parameter Description
names a character vector
sep a character string used to separate a duplicate name from its sequence number.

Return Value

A character vector of same length as names with duplicates changed, in the current locale's encoding.

Details

The algorithm used by make.unique has the property that make.unique(c(A, B)) == make.unique(c(make.unique(A), B)). In other words, you can append one string at a time to a vector, making it unique each time, and get the same result as applying make.unique to all of the strings at once. If character vector A is already unique, then make.unique(c(A, B)) preserves A.

Examples

Example
R
# NOT RUN {
make.unique(c("a", "a", "a"))
make.unique(c(make.unique(c("a", "a")), "a"))

make.unique(c("a", "a", "a.2", "a"))
make.unique(c(make.unique(c("a", "a")), "a.2", "a"))

## Now show a bit where this is used :
trace(make.unique)
## Applied in data.frame() constructions:
(d1 <- data.frame(x = 1, x = 2, x = 3)) # direct
 d2 <- data.frame(data.frame(x = 1, x = 2), x = 3) # pairwise
stopifnot(identical(d1, d2),
          colnames(d1) == c("x", "x.1", "x.2"))
untrace(make.unique)
# }

See Also

make.names