Рассмотрим два вектора.
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
соответствует только первым вхождениям.
Как я могу достичь ожидаемого результата?