将CSV文件转换为R中的Excel

时间:2018-01-08 15:47:27

标签: r

我的问题与此问题类似CSV to Excel

但是,通过使用该帖子中提到的代码,文件名将更改为文件,后跟文件恰好所在的序列号。我的问题是我们如何保留文件名? 就像现在我们得到file1.xlsx,file2.xlsx等。我希望能够得到 分析report.xlsx,budgeting.xlsx。有什么建议吗?

以下是我正在使用的代码

 filenames <- list.files("D:/finished CSVs", pattern="*.csv", full.names=TRUE)

for(i in 1:length(filenames))
{
  a<- read.csv(filenames[i])
  write.xlsx(a,paste("file",i,".xlsx", sep=""))
}

2 个答案:

答案 0 :(得分:1)

您可以尝试在此时迭代名称:

filenames <- list.files("D:/finished CSVs", pattern="*.csv", full.names=TRUE)

for(i in filenames) {
  a <- read.csv(i)
  new_name <- sub('.csv', '.xlsx', i, fixed = TRUE)
  write.xlsx(a, new_name)
}

答案 1 :(得分:0)

可以使用basename()检索路径中的文件名。这样的事情应该有效

convert_csv_to_xlsx <- function(csv_path, xlsx_dir_path = "D:/finished_xslx") {
  csv_name <- basename(xlsx_path)
  xlsx_name <- sub(pattern = "csv$", replacement = "xlsx", x = xlsx_name)
  xlsx_path <- file.path(xlsx_dir_path, xlsx_name)
  db <- read.csv(csv_path)
  write.xslx(db, xlsx_path)
} 

filenames <- list.files("D:/finished CSVs", pattern="*.csv", full.names=TRUE)

lapply(filenames, convert_csv_to_xlsx)