4

只是一个简单的问题。我有一个数据框(仅显示一个向量),如下所示:

cln1
A
b
A
A
c
d
A
....

我想要以下输出:

cln1
b
c
d

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

4

3 回答 3

9

您可以setdiff为此使用:

R> v <- c(1,1,2,2,3,4,5)
R> setdiff(v, v[duplicated(v)])
[1] 3 4 5
于 2013-02-27T14:13:08.437 回答
5

您可以使用countfrom plyrpackage 来计算一个项目的出现次数,并删除所有多次出现的项目。

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  

注意!,这意味着NOT。你当然把它放在一个单行中:

l[!l %in%  with(count(l), x[freq > 1])]
于 2013-02-27T14:15:27.460 回答
2

另一种使用方式table

使用@juba 的数据:

as.numeric(names(which(table(v) == 1)))
# [1] 3 4 5

对于 OP 的数据,由于它是字符输出,as.numeric因此不需要。

names(which(table(v) == 1))
# [1] "b" "c" "d"
于 2013-02-27T14:23:07.710 回答