【发布时间】:2013-06-05 18:28:32
【问题描述】:
我有一个数据框列表,并为列表中的每个元素(例如每个数据框)命名:
例如
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 迭代数据框列表中的名称,保存多个具有不同名称的文件(在这种情况下,两个文件命名为A 和B) 对应于修改后的数据帧。
【问题讨论】:
-
我知道你说过你试图避免使用 for 循环,但我认为在这种情况下使用 for 循环是正确的。如果没有返回任何内容,我不喜欢使用
lapply()。plyr包中的l_ply()之类的东西可能更合适。或者只是一个 for 循环。