我有677个依赖变量和1个独立变量,如下所示。我想在自变量上运行每个677列的回归。以前曾被问过,但在我的案例中并没有起作用。另外,我想在一个向量中收集系数,然后回归到其他变量。
'data.frame': 240 obs. of 678 variables:
$ X1998.01.12 : num -0.0006958 -0.0019206 -0.0025667 -0.0031404 -0.0000429 ...
$ X1998.02.12 : num 0.0032112 -0.0002508 0.0010668 -0.0000417 0.0036056 ..
我运行以下代码:
pred = df[,c(1:677)];
pred=as.matrix(pred)
y=df[,c(678)]
my_lms <- lapply(de, function(x) lm(pred~y))
但是,我遇到了错误:
model.frame.default中的错误(公式= pred~y,drop.unused.levels = TRUE):
变量&#39; pred&#39;的无效类型(列表)
感谢任何帮助!
注意:评论后添加如下。
list_out <- lapply(colnames(de)[1:677], function(i)
tidy(lm(as.formula(paste(x ~ de$X678,i)), data = de)))
错误讯息是
Error in parse(text = x, keep.source = FALSE) :
<text>:2:3: unexpected symbol
1: ~ X1
2: x X1
^
答案 0 :(得分:2)
您无需将pred
转换为矩阵。它更容易作为data.frame
。你可以在下面看到这两种方法。
# data.frame
pred <- df[, c(1:677)]
y <- df[, c(678)]
my_lms <- lapply(pred, function(x) lm(x ~ y))
# matrix
pred <- as.matrix(pred)
my_lms <- lapply(1 : ncol(pred), function(x) lm(pred[, x] ~ y))
另外,检查您是否具有正确的因变量和自变量。
编辑tydying
library(broom)
my_lms <- lapply(1 : ncol(pred), function(x) tidy(lm(pred[, x] ~ y)))
my_df <- do.call(rbind, my_lms)