在R中将Excel文件列表动态转换为csv文件

时间:2015-06-14 05:24:45

标签: r csv xlsx

我目前有一个包含所有Excel(.xlsx)文件的文件夹,并且使用R我想使用“openxlsx”包(或某些变体)自动将所有这些文件转换为CSV文件。我目前有以下代码来转换其中一个文件并将其放在同一个文件夹中:convert("team_order\\team_1.xlsx", "team_order\\team_1.csv")

我想自动执行该过程,因此它会对文件夹中的所有文件执行此操作,并且还会删除当前的xlsx文件,因此只保留csv文件。谢谢!

2 个答案:

答案 0 :(得分:11)

你可以尝试使用rio,因为它似乎就是你已经在使用的东西:

library("rio")
xls <- dir(pattern = "xlsx")
created <- mapply(convert, xls, gsub("xlsx", "csv", xls))
unlink(xls) # delete xlsx files

答案 1 :(得分:5)

# Create a vector of Excel files to read
files.to.read = list.files(pattern="xlsx")

# Read each file and write it to csv
lapply(files.to.read, function(f) {
  df = read.xlsx(f, sheet=1)
  write.csv(df, gsub("xlsx", "csv", f), row.names=FALSE)
})

您可以使用以下命令删除文件。但是,在上一个代码之后立即自动运行会很危险。如果以前的代码由于某种原因失败,下面的代码仍将删除您的Excel文件。

lapply(files.to.read, file.remove)