lapply为重复回归产生错误

时间:2018-05-12 22:44:58

标签: r regression

我有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
     ^ 

1 个答案:

答案 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)