# make.unique: Make Character Strings Unique

## Description

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

## Usage

 `1` ```make.unique(names, sep = ".") ```

## Arguments

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

## 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`.

## Value

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

## Author(s)

Thomas P. Minka

`make.names`
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14``` ```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) ```