我有一个如下所示的数据框(df):
condition dv1 dv2 dv3
1 2 4 3
2 5 7 4
3 7 1 2
为了同时运行多个回归,我使用了如下代码:
dfdv <- df[,2:4]
output <- lm(as.matrix(dfdv) ~ condition, data = df)
summary(output)
这为我提供了dv1,dv2和dv3的所有dv〜条件回归。这些是输出中给出的回归:
dv1 ~ condition
dv2 ~ condition
dv3 ~ condition
但是,我现在想控制回归中的不同条件。具体来说,我想找出一种有效运行以下回归的方法。
dv1 ~ condition + dv1
dv1 ~ condition + dv2
dv1 ~ condition + dv3
我尝试使用与上面的工作原理类似的原理进行了以下尝试,但没有成功。
dfdv <- df[,2:4]
output2 <- lm(dv1 ~ condition + as.matrix(dfdv), data = df)
summary(output2)
[它给了我一次使用所有dv回归的回归,而不是我想要的回归。这就是给我的:
dv1 ~ condition + dv1 + dv2 + dv3
有人知道我如何使用简单的代码执行这些回归分析吗?我的实际数据集中比该示例中包含的还要多。
我们可以使用lapply
。循环浏览“ dv”列名称,通过指定响应和因变量使用reformulate
创建公式,然后应用lm
v1 <- grep('^dv\\d+$", names(df), value = TRUE)
lapply(v1, function(dv) lm(reformulate(c(dv, "condition"),
dv), data = df))
或使用paste
创建公式
lapply(v1, function(dv) lm(paste0(dv, " ~ ", "condition + ", dv), data = df))