【问题标题】:Dynamically converting a list of Excel files to csv files in R在R中将Excel文件列表动态转换为csv文件
【发布时间】:2015-06-14 05:24:44
【问题描述】:

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

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

【问题讨论】:

  • 使用该策略进行一些搜索:[r] list.files。如果你表现出一些主动性,人们就不太可能投反对票。

标签: r csv xlsx


【解决方案1】:

您可以使用rio 尝试此操作,因为您似乎已经在使用它:

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

【讨论】:

    【解决方案2】:
    library(readxl)
    
    # 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_excel(f, sheet=1)
      write.csv(df, gsub("xlsx", "csv", f), row.names=FALSE)
    })
    

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

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

    为了安全起见,您可以将其包装在 try/catch 块中。

    【讨论】:

      猜你喜欢
      • 2017-11-30
      • 2021-07-15
      • 2020-03-08
      • 2018-01-17
      • 1970-01-01
      • 2020-10-07
      • 1970-01-01
      • 1970-01-01
      • 2021-07-21
      相关资源
      最近更新 更多