这是我的数据:
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(最好)的循环,使用回归模型分析时间 1 和 MNR1,时间 2 和 MRN3,以及......
我试过下面的函数,但是没有得到结果:
R <- lapply(1:ncol(df1), function(x) lm(Time[,x] ~ MNR[,x]))
但它并没有给我每个组的结果。我们可以使用 lapply 来实现吗?
最佳答案
我们可以使用 Map
粘贴相应的列名,或者通过在 Map 中分别传递 'Times' 和 'MNR' 列名来使用
reformulate
创建公式
Map(function(x, y) lm(reformulate(y, x), data = df1),
names(df1)[1:3], names(df1)[4:6])
或者用粘贴
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))
或者使用 purrr
中的 map2
library(purrr)
map2(names(df1)[1:3], names(df1)[4:6], ~ lm(reformulate(.y, .x), data = df1)
关于r - 使用lapply中的特定列计算多个回归分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59117216/