R:删除向量中的重复元素

Zyf*_*ion 5 r vector filter

我有一个像这样的向量:

x = c(1,2,3,4,5,6,4,5,6,7)

> x
 [1] 1 2 3 4 5 6 4 5 6 7
Run Code Online (Sandbox Code Playgroud)

我想摆脱重复并得到这样的东西:

> [1] 1 2 3 7 
Run Code Online (Sandbox Code Playgroud)

我的尝试

y = x[duplicated(x)]

> y
[1] 4 5 6

> x[x!=y]
[1] 1 2 3 7
Warning message:
In x != y : longer object length is not a multiple of shorter object length
> 
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

我应该担心这个错误吗?

还有另一种方法可以做到而不会出错吗?

Hug*_*ugh 5

小心在测试中使用连续数字!

x <- c(1,2,3,4,5,6,4,5,6,7)
x1 <- c(-1, -1, 2, 8, 8, 15)

keep_singles <- function(v){
  v[!(v %in% v[duplicated(v)])] 
}

keep_singles(x)

[1] 1 2 3 7

keep_singles(x1)

[1]  2 15
Run Code Online (Sandbox Code Playgroud)


Mik*_* H. 4

使用基本 R 实现此操作的简单方法不会向您发出警告消息。

编辑: @Hugh 建议的更灵活的答案

y = as.numeric(names(which(table(x)==1)))

y
[1] 1 2 3 7
Run Code Online (Sandbox Code Playgroud)