2017-08-30 54 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