修改 R 中的混合效应公式
Modify a mixed-effects formula in 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
项?
update
函数用于修改公式。使用
update(my_formula, ~.-e)
# a ~ b + (1 | d)
-e
表示从公式中删除 "e" 项,而 .
表示保留其他所有项。
我有一个公式:
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
项?
update
函数用于修改公式。使用
update(my_formula, ~.-e)
# a ~ b + (1 | d)
-e
表示从公式中删除 "e" 项,而 .
表示保留其他所有项。