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

7cjasjjr  于 2023-05-20  发布在  其他
关注(0)|答案(3)|浏览(123)

我有一个 Dataframe 列表,并给出了列表中的每个元素(例如每个 Dataframe )的名称:
例如

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)

我有一个函数,我想应用到每个 Dataframe ;在这个函数中,我想包含一行代码来将结果写入文件(最终我想做更复杂的事情,比如保存每个 Dataframe 的两个变量之间的相关性图,但我认为我应该从简单的开始)
例如

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迭代 Dataframe 列表中的名称,保存与修改的 Dataframe 对应的多个具有不同名称的文件(在本例中,两个文件名为AB)。

pkln4tw6

pkln4tw61#

它将与以下lapply调用一起工作:

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

yxyvkwin2#

我们有很多选择。例如:

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')))
axr492tv

axr492tv3#

我遇到了同样的问题,我使用plyr()包中的l_ply()函数解决了它。
my_list <- list(df1,df2)my_function <- function(i){...} library(plyr)l_ply(my_list,my_function)

相关问题