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


R duplicated 確定重複元素


R語言 duplicated 位於 base 包(package)。

說明

duplicated() 確定向量或數據幀的哪些元素是具有較小下標的元素的重複項,並返回一個邏輯向量,指示哪些元素(行)是重複項。

anyDuplicated(.) 是 “generalized” 更高效的版本 any(duplicated(.)) ,返回正整數索引而不僅僅是 TRUE

用法

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

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

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

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

參數

x

向量或 DataFrame 或數組或 NULL

incomparables

無法比較的值向量。 FALSE 是一個特殊值,意味著所有值都可以進行比較,並且可能是默認值以外的方法接受的唯一值。它將在內部強製轉換為與 x 相同的類型。

fromLast

邏輯指示是否應從反麵考慮重複,即最後一個(或最右邊)的相同元素將對應於 duplicated = FALSE

nmax

預期的唯一項目的最大數量(大於 1)。

...

特定方法的參數。

MARGIN

數組邊距保持固定:請參閱 apply ,並注意 MARGIN = 0 可能有用。

細節

這些是通用函數,具有向量(包括列表)、數據幀和數組(包括矩陣)的方法。

對於默認方法,隻要 duplicatedanyDuplicated 存在等效方法定義,anyDuplicated(x, ...) 就是 any(duplicated(x, ...)) 的 “generalized” 快捷方式,因為它返回第一個重複項的索引 i如果有條目x[i],否則0。當 duplicatedanyDuplicated 至少之一具有相關方法時,它們的行為可能會有所不同。

duplicated(x, fromLast = TRUE) 相當於但比 rev(duplicated(rev(x))) 更快。

如果剩餘維度與較早(或較晚,當 fromLast = TRUE 時)元素的維度相同(按行優先順序),則數組方法計算 MARGIN 指定的 sub-array 的每個元素。這最常用於查找重複的行(默認)或列(使用 MARGIN = 2 )。請注意, MARGIN = 0 返回與 x 具有相同維度屬性的數組。

缺失值 ( "NA" ) 被視為等於、數字和複數,與 NaN 不同;字符串將在“common encoding”中進行比較;有關詳細信息,請參閱使用相同概念的match(和unique)。

incomparables 中的值永遠不會被標記為重複。這旨在用於相當小的值集,但對於非常大的值集則效率不高。

除了因子、邏輯向量和原始向量之外,默認 nmax = NA 相當於 nmax = length(x) 。由於分配了8*nmax字節大小的哈希表,適當設置nmax可以節省大量內存。對於因子,它會自動設置為 length(x) 和級別數加一(對於 NA )中較小的一個。如果nmax設置得太小,可能會出現錯誤:nmax = 1被默默忽略。

duplicated 的默認方法支持 Long vectors,但僅在提供 nmax 時才可用。

duplicated() :對於向量輸入,與 x 長度相同的邏輯向量。對於 DataFrame ,是一個邏輯向量,每行一個元素。對於矩陣或數組,當 MARGIN = 0 時,是具有相同維度和暗名稱的邏輯數組。

anyDuplicated() :長度為 1 的整數或實數向量,其值為第一個重複項的從 1 開始的索引(如果有),否則為 0

警告

將其用於列表可能會很慢,特別是如果元素不是原子向量(請參閱vector)或僅在屬性上有所不同。最壞的情況是

例子

x <- c(9:20, 1:5, 3:7, 0:8)
## extract unique elements
(xu <- x[!duplicated(x)])
## similar, same elements but different order:
(xu2 <- x[!duplicated(x, fromLast = TRUE)])

## xu == unique(x) but unique(x) is more efficient
stopifnot(identical(xu,  unique(x)),
          identical(xu2, unique(x, fromLast = TRUE)))

duplicated(iris)[140:143]

duplicated(iris3, MARGIN = c(1, 3))
anyDuplicated(iris) ## 143

anyDuplicated(x)
anyDuplicated(x, fromLast = TRUE)

參考

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

也可以看看

unique

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Determine Duplicate Elements。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。