Как заменить несколько символов в строке в R? - PullRequest
0 голосов
/ 08 апреля 2019

Предположим, у меня есть строка, такая как:

s <- "a bc de fg hij klmn 123 45 789"

И вектор символов:

c <- c("a-b", "g-h", "j-k", "x-z", "y-5", "3-4")

, что мне нужно, это символ замены, такой как "a b" в sс символами в с "a-b".Желаемый результат будет:

new_s<-"a-bc de fg-hij-klmn 123-45 789"

1 Ответ

2 голосов
/ 08 апреля 2019

Можно использовать gsubfn

library(gsubfn)
gsubfn("\\w\\s\\w", setNames(as.list(c), sapply(c, function(x) gsub("-", " ", x))), s)
#[1] "a-bc de fg-hij-klmn 123-45 789"

Объяснение: Мы сопоставляем \\w\\s\\w и заменяем их шаблонами, указанными в list

setNames(as.list(c), sapply(c, function(x) gsub("-", " ", x)))
#$`a b`
#[1] "a-b"
#
#$`g h`
#[1] "g-h"
#
#$`j k`
#[1] "j-k"
#
#$`x z`
#[1] "x-z"
#
#$`y 5`
#[1] "y-5"
#
#$`3 4`
#[1] "3-4"

Или даже короче (спасибо @ Вэнь-Бену)

gsubfn("\\w\\s\\w", setNames(as.list(c), gsub("-", " ", c)), s)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...