Вставить разделитель между символами - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть фрейм данных столбца символов, в который я хочу вставить разделитель после каждых 2 символов.Столбец символов имеет переменную длину.Вот так выглядит

id      character
1        aaabdg
2        bjdbjhdj
3        bjbkjekkechj
4        jkfb

желаемый фрейм выходных данных:

id      character
1        aa_ab_dg
2        bj_db_jh_dj
3        bj_bk_je_kk_ec_hj
4        jk_fb

Я пытался создать регулярное выражение для использования в приведенном ниже коде, но не нашелудачи пока нет.

cat(paste0('[a-z]{2}', paste(str1, collapse="", ""), '[a-z]{2}'))

и

gsub("([a-z])", "\\,", str1)

Любая помощь / предложения будут высоко оценены

1 Ответ

0 голосов
/ 07 декабря 2018

Вот один из вариантов, использующий gsub:

gsub("(..)(?!$)", "\\1_", "bjbkjekkechj", perl=TRUE)

[1] "bj_bk_je_kk_ec_hj"

. Этот подход заключается в сопоставлении и захвата каждой пары символов подряд, при условии, что после них есть хотя бы один символ.пара.Затем мы заменяем этими двумя захваченными символами, а затем подчеркивание.Отрицательный взгляд (?!$) гарантирует, что мы не добавим подчеркивание после самого последнего сингла или пары символов.

...