只是一个简单的问题。我有一个数据框(仅显示一个向量),如下所示:
cln1
A
b
A
A
c
d
A
....
我想要以下输出:
cln1
b
c
d
换句话说,我想删除所有复制的项目。函数“unique”和“duplicated”返回包含一次表示的复制元素的输出。我想明确地删除它。
只是一个简单的问题。我有一个数据框(仅显示一个向量),如下所示:
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
您可以使用count
from plyr
package 来计算一个项目的出现次数,并删除所有多次出现的项目。
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])]
另一种使用方式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"