如何对一系列按索引引用列的 Dataframe 应用lm函数?

e3bfsja2  于 2022-12-20  发布在  其他
关注(0)|答案(2)|浏览(139)

我有73个大小相同的 Dataframe 。它们都有5列和120行。我将它们存储在一个列表中。我想使用lapply对它们运行一个lm函数。我想对列表中的每个数据集的第一列在接下来的3个相邻列上进行回归。我在弄清楚如何在lapply函数中通过索引引用列时遇到了麻烦。
我无法使用名称,因为所有列的名称都不同。下面是我尝试的方法:

my_lms_ESW <- lapply(listDF_ESW, function(x) lm( x[,1] ~ x[,2] 
                                                + x[,3] + x[,4], x))
iswrvxsc

iswrvxsc1#

在您函数(x)中:

lm(
    as.formula(paste(colnames(x)[1], "~",
        paste(colnames(x)[c(2, 3, 4)], collapse = "+"),
        sep = ""
    )),
    data=x
)

这将通过粘贴列的名称沿着~和+来组装公式对象。

u3r8eeie

u3r8eeie2#

lm()在传递 Dataframe 时的默认行为是调用DF2formula(),它将所有其他列回归到第一列,因此在这种情况下,您只需执行以下操作:

lapply(listDF_ESW, \(x) lm(x[-5])

相关问题