Рассмотрим два вектора.
a <- c(123, 234, 432, 223)
b <- c(234, 238, 342, 325, 326)
Теперь я хочу сопоставить последние две цифры a с двумя двумя цифрами b и создать новый вектор, вставляющий первую цифру a, совпадающую часть и последнюю цифру b. Мой ожидаемый результат:
[1] 1234 1238 2342 4325 4326 2234 2238
Для простоты рассмотрим все элементы всегда длиной 3.
Я пробовал:
sub_a <- substr(a, 2, 3) #get last two digits of a
sub_b <- substr(b, 1, 2) #get first two digits of b
common <- intersect(sub_a, sub_b)
common дает мне общие элементы в a и b, которые:
[1] "23" "34" "32"
а затем я использую match и paste0 вместе, и я получаю неполный вывод.
paste0(a[match(common, sub_a)], substr(b[match(common, sub_b)], 3, 3))
#[1] "1234" "2342" "4325"
как match соответствует только первым вхождениям.
Как я могу достичь ожидаемого результата?