r - 使用 mapply 将 lm 模型列表拟合到数据框列表 [R]

标签 r apply lapply

这可能吗?我可以使用 mapply 来使用 help 示例,但无法使用 lm 来使用简单的示例。这是我的尝试,它返回一个矩阵,而不是 lm 对象列表。

temp.df <- list(
                data.frame(a = rep(1:10, each = 10), b = 1:100, c = rnorm(100), d = rnorm(100, 2))
                           )
temp.df[[2]] <- subset(temp.df[[1]], a > 2)
temp.mod <- list(a ~ b,
              a ~ b + c,
             a ~ b + c + d)
temp.lm <- mapply(lm, formula = temp.mod, data = temp.df[c(1,1,2)])
temp.sum <- lapply(temp.lm, summary)

我应该坚持使用lapply并每次指定data =吗?谢谢!

最佳答案

不确定每次指定数据是什么意思,但如果您将所有内容打包到更大的(嵌套)列表中,并编写自己的调用 lm() 和 summary() 的包装函数,lapply 是一个不错的选择:

bigList <-  list(m1=list(dat=temp.df[[1]],mod=temp.mod[[1]]),
              m1=list(dat=temp.df[[2]],mod=temp.mod[[2]]))

fitLM <- function(x){
lm1 <- lm(x$mod,data=x$dat)
return(summary(lm1))
}


temp.lm <- lapply(bigList,FUN=fitLM)

编辑:只是为了跟进 mapply 行为,当我运行您的代码时,我得到一个 12x3 矩阵,它实际上包含所有相关的 lm 对象信息,但类属性已丢失。我相信,重置它然后 lapply-ingsummary() 可以与您的原始代码一起使用。但我认为在这种情况下,嵌套的参数列表和 lapply() 更简单。

lmList <- list(a=temp.lm[,1],b=temp.lm[,2],c=temp.lm[,3])
lmList <- lapply(lmList,function(x){class(x) <- "lm";return(x)})
temp.sum <- lapply(lmList, summary)

关于r - 使用 mapply 将 lm 模型列表拟合到数据框列表 [R],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6220853/

相关文章:

r - 使用 big.matrix 对象计算欧几里得距离矩阵

r - 如何在R中更有效地拾取和排序?

r - 如何在没有长度警告和抑制的情况下检查向量是否为单个 NA 值

python - Pandas DataFrame.Apply 输出格式

python - 将函数应用于数据框的每一行

r - 无法将 lapply 与 data.table 一起使用

javascript - 为什么 Shiny 的 dateInput() 会导致键盘出现在手机中?

r - 如何按列将函数应用于矩阵列表

r - R 中的 NA 清理后 data.frame 中的类没有改变

r - 如何在Stata中对每一行进行不同组的运算