поменять имя, если оно разделено запятой - PullRequest
0 голосов
/ 23 мая 2019

Если имя и фамилия похожи на «нандан, вивек». Я хочу отобразить как "Вивек Нандан".

n<-("nandan,vivek")

результат:

[1] vivek nandan

где имя: вивек

фамилия: нандан

это имя автора.

Ответы [ 2 ]

0 голосов
/ 23 мая 2019

Можно указать sub для захвата подстроки, состоящей из букв ([a-z]+), за которыми следует ,, и снова для захвата следующего слова ([a-z]+).При замене измените порядок обратных ссылок

sub("([a-z]+),([a-z]+)", "\\2 \\1", n)
#[1] "vivek nandan"

. Параметр без регулярных выражений будет разделять строку, а затем paste пропущенные rev слова

paste(rev(strsplit(n, ",")[[1]]), collapse=" ")
#[1] "vivek nandan"

Или извлеките word и paste

library(stringr)
paste(word(n, 2, sep=","), word(n, 1, sep=","))
#[1] "vivek nandan"

данные

n<- "nandan,vivek"
0 голосов
/ 23 мая 2019

Мы можем попытаться использовать sub здесь:

input <- "nankin,vivek"
sub("([^,]+),\\s*(.*)", "\\2 \\1", input)

[1] "vivek nankin"

Использованный выше шаблон регулярного выражения соответствует фамилии, за которой следует имя, в отдельных группах захвата.Затем он заменяется этими группами захвата в обратном порядке, разделенными одним пробелом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...