R 检查唯一元素

R 检查唯一元素,r,R,只是一个简单的问题。 我有一个数据帧(只显示了一个向量),看起来像: cln1 A b A A c d A 我想要以下输出: cln1 b c d 换句话说,我想删除所有被复制的项目。函数“unique”和“duplicated”返回输出,包括一次表示的复制元素。我想明确地删除它 您可以使用setdiff进行以下操作: R> v <- c(1,1,2,2,3,4,5) R> setdiff(v, v[duplicated(v)]) [1] 3 4 5 R>v setdiff

只是一个简单的问题。 我有一个数据帧(只显示了一个向量),看起来像:

cln1
A
b
A
A
c
d
A

我想要以下输出:

cln1
b
c
d


换句话说,我想删除所有被复制的项目。函数“unique”和“duplicated”返回输出,包括一次表示的复制元素。我想明确地删除它

您可以使用
setdiff
进行以下操作:

R> v <- c(1,1,2,2,3,4,5)
R> setdiff(v, v[duplicated(v)])
[1] 3 4 5
R>v setdiff(v,v[重复(v)])
[1] 3 4 5

您可以使用
plyr
包中的
count
来计算项目的发生次数,并删除所有多次发生的项目

library(plyr)
l = c(1,2,3,3,4,5,6,6,7)
count_l = count(l)
  x freq
1 1    1
2 2    1
3 3    2
4 4    1                                                                           
5 5    1                                                                           
6 6    2                                                                           
7 7    1  
l[!l %in%  with(count_l, x[freq > 1])]
[1] 1 2 4 5 7  
注意
,意思是
不是
。你当然把它放在一行中:

l[!l %in%  with(count(l), x[freq > 1])]

使用
表的另一种方法是:

根据@juba的数据:

as.numeric(names(which(table(v) == 1)))
# [1] 3 4 5
对于OP的数据,由于它是字符输出,因此不需要使用.numeric

names(which(table(v) == 1))
# [1] "b" "c" "d"

如果您不想使用
plyr
,那么您应该能够对
data.frame(表(l))
,我认为。为什么没有人不想使用plyr;)