make.unique {base} | R Documentation |
Makes the elements of a character vector unique by appending sequence numbers to duplicates.
make.unique(names, sep = ".")
names |
a character vector. |
sep |
a character string used to separate a duplicate name from its sequence number. |
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
.
A character vector of same length as names
with duplicates
changed, in the current locale's encoding.
Thomas P. Minka
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)