簡體   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