r - 从混合模型 (lme4) 公式中提取成分

标签 r formula

我正在尝试在 R 中编写一个接受如下公式的函数:

y ~ 1 + sex + age + (1 | school) + (1 | school:section)

有没有一种简单的方法可以提取该公式的各个组成部分以在我的函数中使用?例如,我希望能够获取左侧、每个变量、随机效应变量以及它们的嵌套方式等。

有没有比遍历公式解析树更简单的方法?

最佳答案

如果您想要一个不需要正则表达式的解决方案,我建议您考虑terms

form <- y ~ 1 + sex + age + (1 | school) + (1 | school:section)
terms(form)

## y ~ 1 + sex + age + (1 | school) + (1 | school:section)
## attr(,"variables")
## list(y, sex, age, 1 | school, 1 | school:section)
## attr(,"factors")
##                    sex age 1 | school 1 | school:section
## y                    0   0          0                  0
## sex                  1   0          0                  0
## age                  0   1          0                  0
## 1 | school           0   0          1                  0
## 1 | school:section   0   0          0                  1
## attr(,"term.labels")
## [1] "sex"                "age"                "1 | school"         "1 | school:section"
## attr(,"order")
## [1] 1 1 1 1
## attr(,"intercept")
## [1] 1
## attr(,"response")
## [1] 1
## attr(,".Environment")
## <environment: R_GlobalEnv>

此外,您可以使用attributes从中提取属性:

attributes(terms(form))$term.labels

## [1] "sex"                "age"                "1 | school"         "1 | school:section"

关于r - 从混合模型 (lme4) 公式中提取成分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14049440/

相关文章:

在数据中添加新列和行时 Excel 会自动更新图表

excel - 使用 Excel 数据透视表进行趋势分析和条件格式化

excel - 引用 Excel 函数中的最后一个工作表来对多个工作表中的相同范围求和

r - 在 R 中使用 Rmpfr 进行精确舍入

r - 根据R中字符串的结尾创建新列

R 中的旋转 Axis 标签

java - 绘制圆金字塔的公式

excel - 想要在公式位置设置值

r - 按向量 R 的顺序查找先前最大值的列表

子集化数据帧中意外输出的原因 - R