如何在R中获取仅包含统计模型所用原始变量的最小数据框
提取模型所用原始变量的数据集副本
要获取仅包含模型构建时用到的原始变量的数据集副本,核心思路是从模型的公式中解析出所有原始变量名称,再从原数据框中筛选这些变量。这种方法完全通用,不管变量经过多少次非可逆变换都适用。
具体实现步骤
- 从模型对象中提取公式
- 用
all.vars()解析公式,得到所有原始变量名(该函数会自动忽略变换函数,只识别底层的原始变量) - 从原数据集中选择这些变量
代码示例
# 先构建示例模型 fit <- lm(Sepal.Length ~ log(Sepal.Width) + I(Petal.Length^2), data = iris) # 提取模型用到的所有原始变量名 model_raw_vars <- all.vars(formula(fit)) # 生成仅包含原始变量的数据集副本 mini_iris <- iris[, model_raw_vars, drop = FALSE] # 查看结果 head(mini_iris)
说明
all.vars()是关键:它会递归解析公式里的所有表达式,哪怕变量被嵌套在log()、I()、sqrt()等变换函数中,都能准确提取出原始变量名。比如上面的例子里,会提取出Sepal.Length、Sepal.Width、Petal.Length这三个原始变量。drop = FALSE是为了确保即使最终只筛选出一个变量,结果依然是数据框格式,避免变成向量。
内容的提问来源于stack exchange,提问作者cgmil
相关产品推荐
相关产品推荐

