Функция match() в R - Сопоставление элементов
Функция match() в R используется для поиска позиции первого вхождения элементов одного вектора в другом векторе.
match() аналогична оператору %in%, но возвращает позиции, а не логические значения.
Синтаксис функции match() выглядит следующим образом:
match(x, table, nomatch = NA_integer_)
Описание параметров:
xВектор элементов, которые нужно найти.
tableЦелевой вектор, в котором выполняется поиск.
nomatchЗначение, возвращаемое при неудачном сопоставлении, по умолчанию NA.
Примеры
# Найти позиции элементов
fruits <- c("яблоко", "банан", "апельсин", "виноград", "арбуз")
wanted <- c("банан", "арбуз", "лимон")
# Найти позиции элементов wanted в fruits
positions <- match(wanted, fruits)
print("Результаты сопоставления:")
print(positions)
# Соответствующий поиск: используйте positions для получения фактических значений
print("Найденные фрукты:")
print(fruits[positions[!is.na(positions)]])
fruits <- c("яблоко", "банан", "апельсин", "виноград", "арбуз")
wanted <- c("банан", "арбуз", "лимон")
# Найти позиции элементов wanted в fruits
positions <- match(wanted, fruits)
print("Результаты сопоставления:")
print(positions)
# Соответствующий поиск: используйте positions для получения фактических значений
print("Найденные фрукты:")
print(fruits[positions[!is.na(positions)]])
Выполнение приведенного выше кода дает следующий вывод:
[1] "匹配结果:" [1] 2 5 NA [1] "找到的水果:" [1] "香蕉" "西瓜"
match() часто используется для переупорядочивания другого набора данных на основе одного вектора:
Примеры
# Таблица оценок студентов
student_names <- c("Чжан Сань", "Ли Сы", "Ван У", "Чжао Лю")
scores <- c(88, 92, 76, 85)
names(scores) <- student_names
# Упорядочить оценки в определённом порядке
wanted_order <- c("Ван У", "Чжао Лю", "Чжан Сань", "Ли Сы")
idx <- match(wanted_order, names(scores))
print("Оценки, упорядоченные в указанном порядке:")
print(scores[idx])
student_names <- c("Чжан Сань", "Ли Сы", "Ван У", "Чжао Лю")
scores <- c(88, 92, 76, 85)
names(scores) <- student_names
# Упорядочить оценки в определённом порядке
wanted_order <- c("Ван У", "Чжао Лю", "Чжан Сань", "Ли Сы")
idx <- match(wanted_order, names(scores))
print("Оценки, упорядоченные в указанном порядке:")
print(scores[idx])
Выполнение приведенного выше кода дает следующий вывод:
[1] "按指定顺序排列的成绩:" 王五 赵六 张三 李四 76 85 88 92Другие расширения
Примеры на языке R