2014-01-15 36 views
0

情况:我有几个数据框,我喜欢将其导出为工作目录中的CSV文件以供进一步处理。如何将多个数据帧导出为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循环的一些变化)与上述列表中尝试

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

+2

您可能需要重新编写'csvExport'函数,以便'data'参数是一个字符,这很可能是您应该首先完成的。 'get'将会很有用。 – joran

+0

该名称将始终是i.csv;改变那条线 –

+0

@ joran:这解决了我的问题,谢谢。也许你可以把它变成答案。 –

回答

3

您可以使用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 = "."))