我有一个字符列的数据框,我想在其中每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)
任何帮助/建议将不胜感激
答案 0 :(得分:3)
以下是使用gsub
的一种选择:
gsub("(..)(?!$)", "\\1_", "bjbkjekkechj", perl=TRUE)
[1] "bj_bk_je_kk_ec_hj"
此方法是匹配和连续捕获每对字符,前提是该对之后必须至少有一个字符。然后,我们用捕获的这两个字符替换,然后是下划线。否定的前瞻(?!$)
可确保我们在最后一个或一对字符之后不添加下划线。