当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R unique 提取独特元素


R语言 unique 位于 base 包(package)。

说明

unique 返回一个向量、数据帧或数组,类似于 x,但删除了重复的元素/行。

用法

unique(x, incomparables = FALSE, ...)



## Default S3 method:
unique(x, incomparables = FALSE, fromLast = FALSE,
        nmax = NA, ...)

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

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

参数

x

向量或 DataFrame 或数组或 NULL

incomparables

无法比较的值向量。 FALSE 是一个特殊值,意味着所有值都可以进行比较,并且可能是默认值以外的方法接受的唯一值。它将在内部强制转换为与 x 相同的类型。

fromLast

逻辑指示是否应从最后一个考虑重复,即,将保留最后一个(或最右边)的相同元素。这仅对 namesdimnames 重要。

nmax

预期的唯一项目的最大数量(大于 1)。请参阅duplicated

...

特定方法的参数。

MARGIN

要保持固定的数组边距:单个整数。

细节

unique() 是一个通用函数,具有向量、数据帧和数组(包括矩阵)的方法。

如果剩余维度与较早元素的维度相同(按行优先顺序),则数组方法将计算 MARGIN 指定维度的每个元素。这最常用于矩阵查找唯一的行(默认)或列(使用 MARGIN = 2 )。

请注意,与 Unix 命令 uniq 不同,它省略了重复的元素/行,而不仅仅是重复的元素/行。也就是说,如果某个元素等于任何前一个元素,而不仅仅是等于前一个元素,则该元素将被省略。 (对于后者,请参阅rle)。

缺失值 ( "NA" ) 被视为等于、数字和复数,与 NaN 不同;字符串将在“common encoding”中进行比较;有关详细信息,请参阅使用相同概念的match(和duplicated)。

incomparables 中的值永远不会被标记为重复。这旨在用于相当小的值集,但对于非常大的值集则效率不高。

当在具有多于一列的 DataFrame 上使用时,或者在比较长度大于一的维度时在数组或矩阵上使用时,这会测试字符表示的同一性。这会抓住那些不明智地依赖浮点数完全相等的人!

对于向量,是与 x 类型相同的对象,但每个重复元素只有一个副本。不复制任何属性(因此结果没有名称)。

对于 DataFrame ,返回的 DataFrame 具有相同的列,但可能更少的行(并且行名称来自唯一行的第一次出现)。

矩阵或数组由 [, drop = FALSE] 进行子集化,因此维度和维度名称会被适当复制,并且结果始终具有与 x 相同的维度数。

警告

将其用于列表可能会很慢,特别是如果元素不是原子向量(请参阅vector)或仅在属性上有所不同。最坏的情况是

例子

x <- c(3:5, 11:8, 8 + 0:5)
(ux <- unique(x))
(u2 <- unique(x, fromLast = TRUE)) # different order
stopifnot(identical(sort(ux), sort(u2)))

length(unique(sample(100, 100, replace = TRUE)))
## approximately 100(1 - 1/e) = 63.21

unique(iris)

参考

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

也可以看看

duplicated 给出重复元素的索引。

rle 相当于 Unix uniq -c 命令。

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Extract Unique Elements。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。