我有一个数据框列表,并给列表中的每个元素(例如每个数据框)一个名称:
e.g。
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)
我有一个我想要应用于每个数据框的功能;在这个函数中,我想要包含一行来将结果写入文件(最终我想做更复杂的事情,比如保存每个数据框的两个变量之间相关性的图,但我想我开始很简单)
e.g。
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
遍历数据框列表中的名称,保存具有不同名称的多个文件(在这种情况下,名为A
和B
的两个文件,与修改后的数据框相对应。
答案 0 :(得分: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')))
答案 1 :(得分:9)
它适用于以下lapply
电话:
lapply(names(mylist), function(x) NewVar(mylist[[x]], "y", x))