Как использовать функцию match() в R (с примерами)


Функция match() в R возвращает позицию первого совпадения между двумя объектами.

Эта функция использует следующий базовый синтаксис:

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 происходит в позиции 3 вектора2.
  • Значение 2 в векторе1 никогда не встречается в векторе2.
  • Значение 3 в векторе1 никогда не встречается в векторе2.
  • Значение 4 в векторе1 никогда не встречается в векторе2.
  • Значение 5 в векторе1 никогда не встречается в векторе2.
  • Первое появление значения 6 в векторе1 происходит в позиции 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:

Как использовать функцию summary() в R
Как использовать функцию replicate() в R
Как использовать функцию gsub() в R
Как использовать функцию par() в R