Ответ 1
Получение индексов значений для match()
.
first = c( "a" , "c" , "b" )
second = c( "c" , "b" , "a" )
match(second, first)
[1] 2 3 1
Я бы предположил, что это дубликат, но я не могу найти, что так происходит...
Я хотел бы сначала вернуть индекс второго:
first = c( "a" , "c" , "b" )
second = c( "c" , "b" , "a" )
result = c( 2 , 3 , 1 )
Я гарантирую, что первый и второй имеют уникальные значения и одинаковые значения между ними.
Получение индексов значений для match()
.
first = c( "a" , "c" , "b" )
second = c( "c" , "b" , "a" )
match(second, first)
[1] 2 3 1
Я решал связанную проблему, выбирая элементы вектора на основе шаблона. Допустим, у нас есть вектор "а", и мы хотели бы найти вхождения вектора "b". Может использоваться для фильтрации таблиц данных путем умножения шаблонов поиска.
a=c(1, 1, 27, 9, 0, 9, 6, 5, 7)
b=c(1, 9)
match(a, b)
[1] 1 1 NA 2 NA 2 NA NA NA
Так что match() здесь не очень полезно. Применение бинарного оператора% в% более удобно:
a %in% b
[1] TRUE TRUE FALSE TRUE FALSE TRUE FALSE FALSE FALSE
a[a %in% b]
[1] 1 1 9 9
На самом деле из match() help% in% - это просто обход вокруг функции match():
"%in%" <- function(x, table) match(x, table, nomatch = 0) > 0