我的问题与此问题类似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=""))
}
答案 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)