首页 > 解决方案 > 在 R 中数据框中的列子集上拟合模型

问题描述

我正在尝试在协变量子集上使用 lm() 和 matchit() 。我已经生成了任意数量的带有前缀“covar”的列,即“covar.1”、“covar.2”等。我想做类似的事情

lm(组~协变量,数据=df)

其中 covars 是字符串向量 c("covar.1", "covar.2", ...)。

我尝试了几件事,比如

  cols <- colnames(df)
  covars <- cols[grep("covar", colnames(df))]
  m.out <- matchit(group ~ covars, data=df, method="nearest", distance="logit", caliper=.20)

但是得到了variable lengths differ (found for 'covars')

仅使用 covars 和 group 定义一个新的数据框可以工作,但这违背了我的使用目的,matchit因为我希望匹配的数据也有其他列,而不仅仅是我选择匹配的 covars。

这似乎是一项容易的任务,但不知何故我在谷歌搜索后无法弄清楚。不确定作为列子集的 R 公式期望什么。任何帮助表示赞赏。

标签: rformulalm

解决方案


您可能想使用as.formula.
尝试这样做:

代替group ~ covars

as.formula(paste('group','~', paste(covars, collapse="+"))))


推荐阅读