當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。