Cómo eliminar elementos repetidos en un vector, similar a ‘establecer’ en Python

Tengo un vector con elementos repetidos, y me gustaría eliminarlos para que cada elemento aparezca solo una vez.

En Python podría construir un Set partir de un vector para lograr esto, pero ¿cómo puedo hacer esto en R?

Usted puede ver la función unique .

  > v = c(1, 1, 5, 5, 2, 2, 6, 6, 1, 3) > unique(v) [1] 1 5 2 6 3 

Esto hace lo mismo. Más lento, pero útil si también desea un vector lógico de los duplicados:

 v[duplicated(v)] 

Para eliminar solo elementos duplicados contiguos, puede comparar el vector con una versión modificada de sí mismo:

 v <- c(1, 1, 5, 5, 5, 5, 2, 2, 6, 6, 1, 3, 3) v[c(TRUE, !v[-length(v)] == v[-1])] [1] 1 5 2 6 1 3 

Lo mismo se puede escribir un poco más elegante usando dplyr :

 library(dplyr) v[v != lag(v)] [1] NA 5 2 6 1 3 

La NA devuelta por lag() elimina el primer valor, para mantener el primer valor, puede cambiar el valor predeterminado a un valor que será diferente del primer valor.

 v[v != lag(v, default = !v[1])] [1] 1 5 2 6 1 3