Пример строки:
tst_str <- c("abc", "123", "klm", "lop")
Я хотел бы сделать следующие замены:
abc -> za12
123 -> poi
klm -> uyt
Желаемые результаты
Простое вложение вызовов gsub
дает результат:
gsub(
pattern = "abc",
replacement = "za12",
x = gsub(
pattern = "123",
replacement = "poi",
x = gsub(
pattern = "klm",
replacement = "uyt",
x = tst_str
)
)
)
# [1] "za12" "poi" "uyt" "lop"
Проблема
Iхотел бы получить идентичные результаты, используя функции purrr::map*
или purrr::reduce
.Сначала я использовал purrr::reduce2
purrr::reduce2(
.x = c("abc", "123", "klm"),
.y = c("za12", "poi", "uyt"),
.f = function(x, y, init) {
gsub(pattern = x,
replacement = y,
x = init)
},
.init = tst_str
)
Очевидно, что это неправильный способ сделать это:
Предупреждающее сообщение: в gsub (pattern = x,replace = y, x = init):
аргумент 'pattern' имеет длину> 1, и будет использоваться только первый элемент
Примечания