首页 > 解决方案 > 将列表中的每个数据框保存为 CSV,并使文件名与 df 名称相同 - R;应用

问题描述

我有一个数据框列表。我想将每个数据框保存为单独的 CSV 文件,并使文件名与数据框的名称相同。

df <- list(mtcars, iris, ToothGrowth) df <- setNames(df, c("mtcars",
"iris", "ToothGrowth"))

lapply(df, function(a) write.csv(a, file = paste0("C:/home/",
unlist(lapply(names(df)), function (b) b)), ".csv"), row.names = FALSE))

给出错误:

文件中的错误(文件,ifelse(追加,“a”,“w”)):无效的“描述”参数另外:警告消息:在if(file ==“”)文件中<-stdout()else if(是.字符(文件)){:

文件中的错误(文件,ifelse(追加,“a”,“w”)):无效的“描述”参数

我很确定问题出在第二个lapply命令中,但我似乎无法弄清楚如何根据名称“自动”分配文件df名。任何帮助,将不胜感激。

谢谢

标签: rcsvdataframelapply

解决方案


如果要迭代名称和 data.frames,最好同时mapply遍历两个列表

mapply(function(dname, data) 
   write.csv(data, file = paste0("C:/home/", dname, ".csv"), row.names = FALSE), 
   names(df), df)

通过当前值名称迭代列表时lapply()不可用。另一种用法lapply是迭代名称,而不是值

lapply(names(df), function(dname) 
   write.csv(df[[dname]], file = paste0("C:/home/", dname, ".csv"), row.names = FALSE))

推荐阅读