我有一个响应变量y
。
我还有5个因变量的列表
x <- list(x1, x2, x3, x4, x5)
最后我有一个长度为5的逻辑向量z,例如
z <- c(TRUE, TRUE, FALSE, FALSE, TRUE)
鉴于此,我希望R自动进行线性回归
lm(y ~ x1 + x2 + x5)
基本上,TRUE / FALSE对应于是否包含因变量。
我做不到。
我尝试做lm(y ~x[z])
,但是不起作用。
答案 0 :(得分:1)
你可以做
lm(y ~ do.call(cbind, x[z]))
do.call(cbind, x[z])
将x[z]
转换成矩阵,这是lm
可接受的输入格式。这样做的一个问题是输出中的回归变量的名称(假设x
是命名列表)有点混乱。因此,相反,您可以这样做
lm(y ~ ., data = data.frame(y = y, do.call(cbind, x[z])))
这将在输出中给出漂亮的名称(再次假设x
是一个命名列表)。
答案 1 :(得分:1)
在进行线性回归之前,请尝试将y绑定到data.frame或矩阵(cbind)。您可以通过执行以下操作来过滤因变量:
x <- list(x1 = 1:5, x2 = 1:5, x3 = 1:10, x4 = 1:5, x5 = 1:5)
z <- c(TRUE, TRUE, FALSE, FALSE, TRUE)
b <- data.frame(x[which(z == TRUE)])