简体   繁体   English

使用 lapply 对数据框列表应用函数并将输出保存到具有不同名称的文件

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

I have a list of data frames and have given each element in the list (eg each data frame) a name:我有一个数据框列表,并为列表中的每个元素(例如每个数据框)指定了一个名称:

eg例如

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)  

I have a function that I want to apply to each data frame;我有一个要应用于每个数据框的函数; In this function, I want to include a line to write the results to file (eventually I want to do more complicated things like save plots of the correlation between two variables for each data frame but thought I'd start simple)在这个函数中,我想包括一行来将结果写入文件(最终我想做更复杂的事情,比如保存每个数据框的两个变量之间的相关性图,但我想我会从简单开始)

eg例如

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

I want to use lapply() to apply this function to each data frame in my list我想使用lapply()将此函数应用于列表中的每个数据框

something like:就像是:

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

I can't figure out how to assign the "i" within the context of lapply so that i iterates over the names in the list of data frames, saving multiple files with different names (in this case, two files named A and B ) that correspond with the modified data frames.我不知道如何在 lapply 的上下文中分配“i”,以便i遍历数据框列表中的名称,保存具有不同名称的多个文件(在这种情况下,两个文件名为AB )与修改后的数据帧相对应。

它将与以下lapply调用一起使用:

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

There are many options.有很多选择。 For example:例如:

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

or using indexes :或使用索引:

 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