2016-08-11 40 views
1

所以我正在篩選在線性混合模型中查找子模型的R代碼。這是函數的代碼的第一部分:使用grepl(「\ |」,術語)會在R中找到什麼?

findsubmodel.lmer = function(full) { 

resp = as.character(full)[2] 

tms = attributes(terms(full))$term.labels 

fr = grepl("\\|", tms) 

所以"full"在談論你的完整模型。我明白grepl函數通常會做什麼,但是在術語標籤中,"\\|"會找到與匹配項匹配的內容?

回答

3

那麼,就讓我們看看這是什麼做的一個例子:

full <- y~x+(1|x) 
resp = as.character(full)[2] 
resp 
## [1] "y" 
tms = attributes(terms(full))$term.labels 
tms 
## [1] "x"  "1 | x" 
fr = grepl("\\|", tms) 
fr 
## [1] FALSE TRUE 

所以實際的一點是,它標識包含術語|(這將是在lme4語法隨機效應而言)。 \\|是什麼意思?我們正在尋找|,但在具有特殊含義的正則表達式語法中,所以我們需要escape它(告訴R尋找一個文字|字符)。要做到這一點,我們必須在其前面加一個反斜槓\ - 但是R也使用\來轉義字符串中的特殊字符,所以我們需要告訴R我們真的意味着反斜槓,因此我們添加了另一個反斜槓。您可能也有興趣?lme4::findbars ...