Makes the elements of a character vector unique by appending sequence numbers to duplicates.
make.unique(names, sep = ".")
a character vector
a character string used to separate a duplicate name from its sequence number.
A character vector of same length as names
with duplicates
changed, in the current locale's encoding.
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
.
# 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)
# }
Run the code above in your browser using DataLab