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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。