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 或數組或 |
incomparables |
無法比較的值向量。 |
fromLast |
邏輯指示是否應從反麵考慮重複,即最後一個(或最右邊)的相同元素將對應於 |
nmax |
預期的唯一項目的最大數量(大於 1)。 |
... |
特定方法的參數。 |
MARGIN |
數組邊距保持固定:請參閱 |
細節
這些是通用函數,具有向量(包括列表)、數據幀和數組(包括矩陣)的方法。
對於默認方法,隻要 duplicated
和 anyDuplicated
存在等效方法定義,anyDuplicated(x, ...)
就是 any(duplicated(x, ...))
的 “generalized” 快捷方式,因為它返回第一個重複項的索引 i
如果有條目x[i]
,否則0
。當 duplicated
和 anyDuplicated
至少之一具有相關方法時,它們的行為可能會有所不同。
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 dump R 對象的文本表示
- R diag 矩陣對角線
- R deparse 表達式解析
- R deparseOpts 表達式解析選項
- R dots ...、..1 等在函數中使用
- R debug 調試函數
- R do.call 執行函數調用
- R dcf 以 DCF 格式讀寫數據
- R data.class 對象類
- R dimnames 對象的暗名稱
- R dyn.load 對外函數接口
- R diff 滯後差異
- R dput 將對象寫入文件或重新創建它
- R dim 物體的尺寸
- R dontCheck 抑製檢查的身份函數
- R drop 刪除冗餘盤區信息
- R delayedAssign 延遲評估和承諾
- R difftime 時間間隔/差異
- R det 計算矩陣的行列式
- R detach 從搜索路徑中分離對象
- R data.frame DataFrame
- R double 雙精度向量
- R data.matrix 將 DataFrame 轉換為數字矩陣
- R date 係統日期和時間
- R droplevels 刪除因子中未使用的級別
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Determine Duplicate Elements。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。