R语言 两个向量的区别

R语言 两个向量的区别

在这篇文章中,我们将看到如何在R编程语言中找到两个向量之间的差异。

在R编程中,两个向量之间的差值 (A-B) 相当于A中存在而B中不存在的元素,结果元素总是A的一个子集。

方法1:使用setdiff()方法

R中的setdiff()方法用于检索矢量X中不包含在Y中的元素。这个方法可以应用于两个矢量可能属于不同的数据类型,以及第一个参数矢量的元素未经修改就被返回。如果输入向量是等价的,也就是说,它们包含相同的元素,那么结果向量将有空条目,并由datatype(0)输出来表示。另外,在函数调用过程中,改变向量的顺序会得到不同类型的结果。

语法

setdiff( X, Y)

例子

# 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)

输出

[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

这种方法对字符串向量也适用。

例子

# 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)

输出

[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

另外,这个方法自动返回结果向量的唯一元素。任何重复的元素都会被删除。

例子

# 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)

输出

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

方法2:使用%in%操作符

可以使用%in%运算符来检查列表中是否有元素。这种方法首先检查向量1的哪些索引不在向量2中,然后返回向量1的相应元素。随后应用unique()方法,只返回结果向量中的唯一元素。

语法

vec1[! vec1 %in% vec2]

例子

# 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)

输出

[1] “Original vector1 “

[1] “Geeksforgeeks” “Interviews”    “Science”

[1] “Original vector2 “

[1] “Algorithms”      “Science”         “placements”      “data structures”

[1] “Vec1 – Vec2”

[1] “Geeksforgeeks” “Interviews”

这种方法也适用于属于不同数据类型的向量。在这种情况下,将返回vec1的元素。

例子

# 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)

输出

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

方法3:使用intersect方法

Base R中的intersect()方法是用来计算指定参数向量中元素的交集。它返回一个包含两个输入向量中所有元素的向量数组。这个方法包括两个步骤,首先,intersect()方法返回相交数组。接下来,是应用%in%运算符的否定来获得第一个向量中不存在于相交处的元素。返回的元素将只包含在第一个向量中。

举个例子

# 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)

输出

[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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程