繁体   English   中英

循环遍历或套用在R中的数据帧列表上

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM