如何在R中使用match()函数(附实例)

931 阅读2分钟

R中的match()函数返回两个对象之间第一次匹配的位置。

这个函数使用以下基本语法:

match(object1, object2)

下面的例子展示了如何在不同情况下使用这个函数。

例子1:匹配矢量中的一个值

下面的代码显示了如何使用match()函数来查找一个向量中特定数值的首次出现:

#define value to look for in vector
value <- 10

#define vector of values
vector1 <- c(8, 9, 1, 10, 13, 15)

#find first occurrence of 10
match(value, vector1)

[1] 4

这告诉我们,值10首先出现在向量的第4个位置。

注意,如果有多个值匹配,将只返回第一个匹配的位置。

例如,下面这个向量有两个等于10的值,但只返回第一个10的位置。

#define value to look for in vector
value <- 10

#define vector of values with multiple '10' values
vector1 <- c(8, 9, 1, 10, 10, 10)

#find first occurrence of 10
match(value, vector1)

[1] 4

值10出现在4、5、6的位置,但只返回4的位置。

例2:匹配两个向量中的值

下面的代码显示了如何使用**match()**函数来查找一个向量中的值在另一个向量中的首次出现:

#define vectors of values
vector1 <- c(1, 2, 3, 4, 5, 6)
vector2 <- c(8, 6, 1, 10, 10, 15)

#find first occurrence of values in vector1 within vector2
match(vector1, vector2)

[1]  3 NA NA NA NA  2

下面是如何解释输出结果的:

  • 矢量1中的值1第一次出现在矢量2的第3位。
  • 矢量1中的值2从未出现在矢量2中。
  • 矢量1中的值3从未在矢量2中出现。
  • 向量1中的值4从未在向量2中出现。
  • 向量1中的数值5从未在向量2中出现过。
  • 向量1中的值6第一次出现在向量2的第2位。

请注意,我们也可以指定一个不同的值,在没有匹配的情况下使用。

例如,我们可以返回一个0的值,而不是NA:

#define vectors of values
vector1 <- c(1, 2, 3, 4, 5, 6)
vector2 <- c(8, 6, 1, 10, 10, 15)

#find first occurrence of values in vector1 within vector2
match(vector1, vector2, nomatch=0)

[1] 3 0 0 0 0 2

其他资源

下面的教程解释了如何使用R中的其他常用函数:

如何使用R中的summary()函数
如何使用R中的replicate()函数
如何使用R中的gsub()函数
如何使用R中的par()函数