用lapply中的特定列计算多个回归分析

Use*_*100 2 regression r 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)
Run Code Online (Sandbox Code Playgroud)

我想有一个循环使用lapply(最好)使用回归模型和...来分析带有MNR1的Time1,带有MNR2的Time2和带有MRN3的时间3。

我尝试了以下功能,但无法获得结果:

R <- lapply(1:ncol(df1), function(x) lm(Time[,x] ~ MNR[,x]))
Run Code Online (Sandbox Code Playgroud)

但这并没有给我每个小组的结果。我们可以使用lapply吗?

akr*_*run 5

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

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

或搭配 paste

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

或使用 lapply

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

map2purrr

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