R' duplicated返回一个向量,显示向量或数据帧的每个元素是否是具有较小下标的元素的副本.因此,如果5行数据帧的第3行,第4行和第5行相同,duplicated则会给出向量
FALSE, FALSE, FALSE, TRUE, TRUE
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,我真的想得到
FALSE, FALSE, TRUE, TRUE, TRUE
Run Code Online (Sandbox Code Playgroud)
也就是说,我想知道一行是否与具有更大下标的行重复.
PHP 有一个类似的问题,但我正在使用R,我无法将解决方案转换为我的问题.
我有10行50列的数据框,其中一些行完全相同.如果我在它上面使用unique,我会得到一行 - 比方说 - "type",但我真正想要的只是获得那些只出现一次的行.有谁知道我怎么能做到这一点?
我可以看看集群和热图来手动排序,但我有比上面提到的更大的数据帧(最多100行),这有点棘手.
我想删除在矢量中出现多次的所有项目.具体来说,这包括字符,数字和整数向量.目前,我正在使用duplicated()向前和向后(使用fromLast参数).
是否有更高计算效率(更快)的方法在R中执行此操作?下面的解决方案很简单,可以写入/读取,但执行重复搜索两次似乎效率低下.也许使用额外数据结构的基于计数的方法会更好?
例:
d <- c(1,2,3,4,1,5,6,4,2,1)
d[!(duplicated(d) | duplicated(d, fromLast=TRUE))]
#[1] 3 5 6
Run Code Online (Sandbox Code Playgroud)