情况:我有几个数据框,我喜欢将它们作为 CSV 文件导出到工作目录中以进行进一步处理。
目标:使用单个函数(批量导出)将工作区中的数据框集合作为 csv 文件导出到工作目录。
详情:
我的问题不是关于更改数据帧的内容,因此您可以使用 R 提供的任何示例数据进行复制。
我用于导出单个数据框的功能是
csvExport <- function(data, enc = 'utf8'){
name <- paste(deparse(substitute(data)), "csv", sep=".")
con <- file(name, encoding = enc)
write.csv(data, file = con, row.names=FALSE, quote = TRUE, sep = ";")
text<-"exported!"
print(paste(name, text, sep=" "))
}
Run Code Online (Sandbox Code Playgroud)
由于我不喜欢为每个数据框调用函数来显式导出,因此我正在寻找一种方法来导出数据框,方法是指出我喜欢导出的工作区中的哪些数据框:
export <- ls()[1:20]
Run Code Online (Sandbox Code Playgroud)
然后我尝试在上面的列表中使用这个函数(有一些 for 循环的变体):
multipleCSVExport <- function(export){
for (i in export){
csvExport(i)
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我无法创建预期的结果。
您可以使用mget将工作区中的 data.frames 转换为 data.frame 列表,然后使用lapply或for循环。
list_df <- mget(ls()[1:20])
lapply(seq_along(list_df),
function(i) write.table(list_df[[i]],
paste0(names(list_df)[i], ".csv"),
row.names = FALSE, quote = TRUE,
sep = ";", dec = "."))
Run Code Online (Sandbox Code Playgroud)