[英]Looping through or lapply on list of dataframes in R
我确实了解如何使用lapply来更改列表中几个数据框中的变量名称。 但是,我希望执行稍微(但仅稍微)更复杂的操作。
更具体地说,我希望计算几个实体的平均增长率。 已经计算出增长率,所以我只需要对所有数据帧执行以下操作
for (i in 1:13) {
growth.type[,i] <- tapply(growth[,8+i] , growth$type, mean, na.rm = TRUE)
}
这将创建一个新的数据框( growth.type
),该数据框按type
包括原始数据框( growth
)中所有几百个增长率的平均值。
现在,我想对几个数据帧(例如growth
)执行此操作,然后将它们放入新的数据帧(例如growth.type
)。
我希望这是有道理的。
将您要处理的所有数据框放入列表中
xy <- list(growth1, growth2, growth3, ...)
然后将自定义函数应用于此xy
对象。
customFunction <- function(.data) {
for (i in 1:13) {
growth.type[,i] <- tapply(.data[,8+i] , .data$type, mean, na.rm = TRUE)
}
growth.type # this is the object which will be returned when function finishes
}
然后做
out <- lapply(xy, FUN = customFunction)
如果要合并lapply
的结果, lapply
可以使用do.call
,例如do.call("rbind", out)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.