在构建新的模型公式时,我遇到了修改普通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'))
以通用的方式。
我一直在努力解决这个问题超过一天,任何建议都将不胜感激!
起居
答案 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
将得到所需的输出。