上中的R列的数据帧的子集拟合模型(Fit model on a subset of columns

2019-11-05 09:23发布

我想对协变量的子集使用LM()和matchit()。 我已经产生,我想这样做前缀“柯阀”,即“covar.1”,“covar.2”等栏目任意数量的

LM(组〜covars,数据= 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和组新的数据框可以工作但违背了使用我的目的matchit因为我想匹配的数据有其他列,也不仅仅是covars我挑是匹配的。

这似乎是一件容易的事,但不知何故,我无法一些谷歌上搜索后弄清楚。 不知道r ...式预计有作为列的子集。 任何帮助表示赞赏。

Answer 1:

您可能需要使用as.formula
试着这样做:

更换group ~ covars

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



Answer 2:

我在你的其他问题中提到这一点,但cobalt包有一个函数专门针对这一点,这是f.build() 到的第一个参数f.build()是含有处理变量的名称(或式左手侧)的字符串,和第二个参数是包含该变量的名称是在右手侧的串矢量式(即,协变量)。 第二个参数也可以是含有协变量一个data.frame; f.build()简单地提取名称。 然后,它在执行所选择的答案中描述的操作,位其他几个方面,使人们更多的是小将军和强大的错误增加。

所述cobalt文档具有部分上f.build()并使用其使用与glm()matchit()作为例子。

运行后matchit()您可以评估使用的协平衡bal.tab()函数cobalt ,这是兼容MatchIt

bal.tab(m.out, un = TRUE)

该文档为cobalt说明其在使用MatchIt的细节。



文章来源: Fit model on a subset of columns in dataframe in R
标签: r formula lm