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

标签 r regression 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(最好)的循环,使用回归模型分析时间 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/

相关文章:

r - mgcv gam() 错误 : model has more coefficients than data

r - 为什么 purrr::map2 与 base mapply 相比这么慢?

r - 将向量列表列表转换为 R 中的数据框

r - 如何重写循环以在 R 中运行得更快?

r - 在 S4 中编写函数并使用 roxygen2 时开发 R 包

R如何根据上下文填写缺失的日期

python - 回归模型中成本函数的 L1 范数而不是 L2 范数

r - R : Help from the ground up 中的时间序列回归

r - 使用ggplot2创建一个facet_wrap图,每个图中都有不同的注释

r - 如果使用公式而不是 x,y 调用 caret::train 函数,为什么会产生错误?