2017-08-30 90 views
0

一個混合效應式I具有式:修改中的R

my_formula <- a ~ b + (1|d) + e 

欲編程方式從該公式中刪除e變量。

我爲固定效應僅公式進行的是:

drop_es <- function(f) { 
    e_idxs <- grep(pattern = 'e', 
        x = all.vars(f[[3]])) 

    stats::formula(stats::drop.terms(termobj = stats::terms(f), 
            dropx = e_idxs, 
            keep.response = TRUE)) 
} 

這適用於固定效應僅公式:

drop_es(f = a ~ b + e) 

A〜B

但是對於具有隨機效應的公式,它將刪除括號:

drop_es(f = a ~ b + (1|d) + e) 

a〜b + 1 | d

這是一個非常重要的區別 - 沒有括號,它被解釋爲:

a ~ b|d 

我怎樣才能去除e條款不失括號?

回答

3

存在修改公式的update函數。使用

update(my_formula, ~.-e) 
# a ~ b + (1 | d) 

-e手段從公式去掉「E」一詞,而.手段保留一切。

+0

我想知道還有多少基礎R我不知道...謝謝,輕彈! – rcorty