2014-10-09 37 views
1

在構建新模型時,我遇到需要修改普通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'))在通用的方式。R的正則表達式,在任意數字後插入一個字母

我一直在努力解決這個問題超過一天,任何建議將不勝感激!

麗芙

+0

爲什麼'm'沒有加到最後2之後? – 2014-10-09 12:40:08

回答

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將提供所需的輸出。

+0

需要添加一個條件,如果數字是指數或只是'gsub('(?<= x \\ d)','m',m1,perl = TRUE)' – rawr 2014-10-09 12:48:27

+0

見我更新..你不需要在正則表達式中添加'x'。 – 2014-10-09 12:49:08

+0

如果你不想在每個數字後面加一個m,那麼你會這樣做。 Plus OP也想要一個公式 – rawr 2014-10-09 12:55:54

相關問題