首页 文章

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

提问于
浏览
25

我有一个数据框列表,并给列表中的每个元素(例如每个数据框)一个名称:

例如

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 的文件)使用修改过的数据框 .

2 回答

  • 9

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

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

    有很多选择 . 例如:

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

相关问题