如何将多个数据框导出为CSV?

时间:2014-01-15 16:14:09

标签: r csv export

情况:我有几个数据框,我想将其作为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=" "))
}

由于我不想调用每个数据框的函数来显式导出,我正在寻找一种方法来导出数据框,方法是指出我想导出的工作区中的哪些:

export <- ls()[1:20]

然后我尝试使用这个函数(带有for循环的一些变体)和上面的列表:

multipleCSVExport <- function(export){
  for (i in export){
    csvExport(i)
  }
}

但是,我无法创建预期结果。

2 个答案:

答案 0 :(得分:4)

您可以使用mget将工作区中的data.frames转换为data.frame列表,然后使用lapplyfor循环。

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 = "."))

答案 1 :(得分:0)

qdap包只有这样一个功能:mscv_w。开发版是你所追求的,可以在这里下载(按照指示):https://github.com/trinker/qdap#installation

所以这样的事情有效:

mcsv_w(mtcars, CO2, dir="foo")

如果您对此函数的工作方式更感兴趣,请参阅源代码:https://github.com/trinker/qdap/blob/master/R/mcsv_r.R