R的正则表达式,在任何数字后插入一个字母

时间:2014-10-09 12:38:30

标签: regex r formula

在构建新的模型公式时,我遇到了修改普通glm模型框架的需求,例如Y~ x1+x2+I(x1*x2)+I(x1^2)Y~ x1m+x2m+I(x1m*x2m)+I(x1m^2)。基本上我需要的是在设计矩阵中的数字后插入一个字母。所以从c('x1','x2','I(x1*x2)','I(x1^2)')c('x1m','x2m','I(x1m*x2m)','I(x1m^2'))以通用的方式。

我一直在努力解决这个问题超过一天,任何建议都将不胜感激!

起居

1 个答案:

答案 0 :(得分:0)

我想你想要这样的东西,

> x <- c('x1','x2','I(x1*x2)','I(x1^2)')
> gsub("(?<!\\^)(\\d)", "\\1m", x, perl=T)
[1] "x1m"        "x2m"        "I(x1m*x2m)" "I(x1m^2)"

(?<!\\^)(\\d)正则表达式将捕获所有未加^符号的数字。将匹配的数字替换为组索引1中的数字加上字母m将得到所需的输出。