首页 > 解决方案 > 在 lapply 中使用特定列计算多个回归分析

问题描述

这是我的数据:

df1<-read.table(text=" Time1    Time2   Time3   MNR1    MNR2    MNR3

36  36  43  5   4   5
40  41  51  4   6   4
38  36  50  7   8   3
35  51  43  8   3   2
52  55  57  3   2   4
",header=TRUE)

我想使用 lapply (最好)使用回归模型分析 Time1 和 MNR1、Time2 和 MNR2 和 Time 3 和 MRN3 使用回归模型和 ....

我尝试了以下功能,但未能得到结果:

R <- lapply(1:ncol(df1), function(x) lm(Time[,x] ~ MNR[,x]))

但它并没有给我每组的结果。我们可以用 lapply 来做吗?

标签: rregressionlapply

解决方案


我们可以使用Map粘贴相应的列名或reformulate通过分别传递“Times”和“MNR”列名来创建公式Map

Map(function(x, y) lm(reformulate(y, x), data = df1),
        names(df1)[1:3], names(df1)[4:6])

或与paste

Map(function(x, y) lm(paste(x, y, sep="~"), data = df1),
        names(df1)[1:3], names(df1)[4:6])

或使用lapply

lapply(paste(names(df1)[1:3], "~", names(df1)[4:6]), function(x) lm(x, data = df1))

map2purrr

library(purrr)
map2(names(df1)[1:3], names(df1)[4:6], ~ lm(reformulate(.y, .x), data = df1)

推荐阅读