Diferencia entre dos vectores en R

En este artículo, veremos cómo encontrar la diferencia entre dos vectores en el lenguaje de programación R. 

La diferencia (AB) entre dos vectores en Programación R es equivalente a los elementos presentes en A que no están presentes en B. Los elementos resultantes son siempre un subconjunto de A. En caso de que ambos conjuntos no se intersequen, el conjunto completo de A es regresado. 

Método 1: Usar el método setdiff()

El método setdiff() en R se usa para recuperar los elementos del vector X, que no están contenidos en Y. Este método se puede aplicar donde los dos vectores pueden pertenecer a diferentes tipos de datos, también, donde los elementos del primer argumento vector se devuelven sin modificar. En caso de que los vectores de entrada sean equivalentes, es decir, que contengan los mismos elementos, el vector resultante tendrá entradas nulas y será referido por la salida del tipo de datos (0). Además, se obtienen diferentes tipos de resultados al cambiar el orden de los vectores durante la llamada a la función. 

Sintaxis:

conjuntodiferencia( X, Y)

Ejemplo:

R

# declaring first integer vector
vec1 <- c(1:5)
  
# declaring second string vector
vec2 <- c(4:8)
  
print ("Original vector1 ")
print (vec1)
  
print ("Original vector2 ")
print (vec2)
  
# computing the difference 
# in vectors
diff <- setdiff(vec1,vec2)
print ("Vec1- Vec2")
print (diff)

Producción

[1] "Original vector1 "
[1] 1 2 3 4 5
[1] "Original vector2 "
[1] 4 5 6 7 8
[1] "Vec1- Vec2"
[1] 1 2 3

Este método también funciona para vectores de string. 

Ejemplo:

R

# declaring first integer vector
vec1 <- c("Geeksforgeeks","Interviews","Science")
  
# declaring second string vector
vec2 <- c("Algorithms","Science",
          "placements","data structures")
  
print ("Original vector1 ")
print (vec1)
  
print ("Original vector2 ")
print (vec2)
  
# computing the difference in 
# vectors
diff <- setdiff(vec2,vec1)
print ("Vec2 - Vec1")
print (diff)

Producción

[1] “Vector original1”

[1] «Geeksforgeeks» «Entrevistas» «Ciencia»      

[1] “Vector original2”

[1] «Algoritmos» «Ciencia» «ubicaciones» «estructuras de datos»

[1] “Vec2 – Vec1”

[1] “Algoritmos” “colocaciones” “estructuras de datos”

Además, este método devuelve automáticamente elementos únicos del vector resultante. Se eliminan todos los elementos duplicados. 

Ejemplo:

R

# declaring first integer vector
vec1 <- c("Geeksforgeeks","Interviews","Science")
  
# declaring second string vector
vec2 <- c(1,2,3,5,5)
  
print ("Original vector1 ")
print (vec1)
  
print ("Original vector2 ")
print (vec2)
  
# computing the difference in vectors
diff <- setdiff(vec2,vec1)
print ("Vec2 - Vec1")
print (diff)

Producción

[1] "Original vector1 "
[1] "Geeksforgeeks" "Interviews"    "Science"      
[1] "Original vector2 "
[1] 1 2 3 5 5
[1] "Vec2 - Vec1"
[1] 1 2 3 5

Método 2: Usar el operador %in%

El operador %in% se puede utilizar para comprobar la presencia de un elemento en la lista. Este enfoque primero verifica qué índices del vector1 no están en el vector2 y luego se devuelven los elementos correspondientes del vector1. A esto le sigue la aplicación del método unique(), que devuelve solo elementos únicos del vector resultante.

Sintaxis:

vec1[! vec1 %in% vec2]

Ejemplo:

R

# declaring first integer vector
vec1 <- c("Geeksforgeeks","Interviews","Science")
  
# declaring second string vector
vec2 <- c("Algorithms","Science",
          "placements","data structures")
  
print ("Original vector1 ")
print (vec1)
  
print ("Original vector2 ")
print (vec2)
  
# computing the difference in vectors
diff <- unique(vec1[! vec1 %in% vec2])
print ("Vec1 - Vec2")
print (diff)

Producción

[1] “Vector original1”

[1] «Geeksforgeeks» «Entrevistas» «Ciencia»      

[1] “Vector original2”

[1] «Algoritmos» «Ciencia» «ubicaciones» «estructuras de datos»

[1] “Vec1 – Vec2”

[1] «Geeksforgeeks» «Entrevistas»   

Este enfoque también es compatible con vectores pertenecientes a diferentes tipos de datos. En este caso, se devuelven los elementos del vec1. 

Ejemplo:

R

# declaring first integer vector
vec1 <- c("Geeksforgeeks","Interviews","Science")
  
# declaring second string vector
vec2 <- c(1,2,3,5,5)
  
print ("Original vector1 ")
print (vec1)
  
print ("Original vector2 ")
print (vec2)
  
# computing the difference in vectors
diff <- unique(vec2[! vec2 %in% vec1])
print ("Vec2 - Vec1")
print (diff)

Producción

[1] "Original vector1 "
[1] "Geeksforgeeks" "Interviews"    "Science"      
[1] "Original vector2 "
[1] 1 2 3 5 5
[1] "Vec2 - Vec1"
[1] 1 2 3 5

Método 3: Usar el método de intersección

El método intersect() en Base R se usa para calcular la intersección de elementos en los vectores de argumento especificados. Devuelve una array vectorial de todos los elementos presentes en ambos vectores de entrada. El enfoque implica dos pasos, el primero es el método intersect() para devolver la array de intersección. Lo siguiente es la aplicación de la negación del operador %in% para obtener elementos del primer vector que no están presentes en la intersección. Los elementos devueltos estarán contenidos únicamente en el primer vector. 

ejemplo:

R

# declaring first integer vector
vec1 <- c(1:5)
  
# declaring second string vector
vec2 <- c(4:8)
  
print ("Original vector1 ")
print (vec1)
  
print ("Original vector2 ")
print (vec2)
  
# computing the intersection of two 
# vectors
intersect <- intersect(vec1,vec2)
  
# getting elements of vec1 not in 
# intersection
diff <- vec1[!(vec1 %in% intersect)]
print ("Elements of vec1 not in vec2")
print(diff)

Producción

[1] "Original vector1 "
[1] 1 2 3 4 5
[1] "Original vector2 "
[1] 4 5 6 7 8
[1] "Elements of vec1 not in vec2"
[1] 1 2 3

Publicación traducida automáticamente

Artículo escrito por yashkumar0457 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *