簡體   English   中英

使用 lapply 對數據框列表應用函數並將輸出保存到具有不同名稱的文件

[英]Using lapply to apply a function over list of data frames and saving output to files with different names

我有一個數據框列表,並為列表中的每個元素(例如每個數據框)指定了一個名稱:

例如

df1 <- data.frame(x = c(1:5), y = c(11:15))  
df2 <- data.frame(x = c(1:5), y = c(11:15))  
mylist <- list(A = df1, B = df2)  

我有一個要應用於每個數據框的函數; 在這個函數中,我想包括一行來將結果寫入文件(最終我想做更復雜的事情,比如保存每個數據框的兩個變量之間的相關性圖,但我想我會從簡單開始)

例如

NewVar <- function(mydata, whichVar, i) {  
mydata$newVar <- mydata[, whichVar] + 1  
write.csv(mydata, file = i)  
}

我想使用lapply()將此函數應用於列表中的每個數據框

就像是:

hh<-lapply(mylist, NewVar, whichVar = "y")

我不知道如何在 lapply 的上下文中分配“i”,以便i遍歷數據框列表中的名稱,保存具有不同名稱的多個文件(在這種情況下,兩個文件名為AB )與修改后的數據幀相對應。

它將與以下lapply調用一起使用:

lapply(names(mylist), function(x) NewVar(mylist[[x]], "y", x))

有很多選擇。 例如:

  lapply(names(mylist),
         function(x)write.csv(mylist[x],
                              file =paste0(x,'.csv')))

或使用索引:

 lapply(seq_along(mylist),
     function(i)write.csv(mylist[i],
                          file =paste0(names(mylist)[i],'.csv')))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM