unique {base} | R Documentation |

## Extract Unique Elements

### Description

`unique`

returns a vector, data frame or array like `x`

but with duplicate elements removed.

### Usage

unique(x, incomparables = FALSE, ...)
## S3 method for class 'matrix':
unique(x, incomparables = FALSE, MARGIN = 1, ...)
## S3 method for class 'array':
unique(x, incomparables = FALSE, MARGIN = 1, ...)

### Arguments

`x` |
a vector or a data frame or an array or `NULL` . |

`incomparables` |
a vector of values that cannot be compared.
Currently, `FALSE` is the only possible value, meaning that all
values can be compared. |

`...` |
arguments for particular methods. |

`MARGIN` |
the array margin to be held fixed: a single integer. |

### Details

This is a generic function with methods for vectors, data frames and
arrays (including matrices).

The array method calculates for each element of the dimension
specified by `MARGIN`

if the remaining dimensions are identical
to those for an earlier element (in row-major order). This would most
commonly be used for matrices to find unique rows (the default) or columns
(with `MARGIN = 2`

).

### Value

For a vector, an object of the same type of `x`

, but with only
one copy of each duplicated element. No attributes are copied (so
the result has no names).

For a data frame, a data frame is returned with the same columns but
possibly fewer rows (and with row names from the first occurrences of
the unique rows).

A matrix or array is subsetted by `[, drop = FALSE]`

, so
dimensions and dimnames are copied appropriately, and the result
always has the same number of dimensions as `x`

.

### Warning

Using this for lists is potentially slow, especially if the elements
are not atomic vectors (see `vector`

) or differ only
in their attributes. In the worst case it is *O(n^2)*.

### References

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988)
*The New S Language*.
Wadsworth & Brooks/Cole.

### See Also

`duplicated`

which gives the indices of duplicated
elements.

### Examples

unique(c(3:5, 11:8, 8 + 0:5))
length(unique(sample(100, 100, replace=TRUE)))
## approximately 100(1 - 1/e) = 63.21
unique(iris)

[Package

*base* version 2.5.0

Index]