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]