首页 > 解决方案 > 在 for 循环中操作数据帧列表

问题描述

我正在准备数据框以在 R 中进行分析。我可以正确地分别准备它们,但出于显而易见的原因,我想将准备工作放在 for 循环(或apply/ lapply?)中。

初始代码是这样的(每个数据帧都有效),其中indHab是一个数据帧:

indHabO <- indHab[complete.cases(indHab),]
row.names(indHabO) <- indHabO$Location
indHabO[1] <- NULL
indHabOK <- indHabO[,colSums(indHabO) > 0.1]

我尝试了一个 for 循环,但我被卡住了。我唯一知道的是,在尝试某种循环之前将所有数据帧放在一个列表中是明智的,就像这样:

dataSets <- list(indHab, indLoc, famHab, famLoc, indicatorHab_2012, 
indicatorHab_2018, indicatorLoc_2012, indicatorLoc_2018)

如何在列表中的所有数据帧上循环操作?

标签: rdataframefor-loopdata-manipulation

解决方案


感谢 r2evans,这就是我使用的。

它将所有操作过的数据帧放在一个新列表中。

dataSetsOK <- lapply(dataSets, function(x) { x <- x[complete.cases(x),]; row.names(x) 
<- x$Location; x[1] <- NULL; x <- x[,colSums(x) > 0.1] })

推荐阅读