修改R中的混合效果公式

时间:2017-08-30 18:49:20

标签: r formula lme4 mixed-models

我有一个公式:

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条款?

1 个答案:

答案 0 :(得分:3)

存在update函数来修改公式。使用

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

-e意味着放弃&#34; e&#34;来自公式的术语,.表示保留其他所有内容。