将.txt更改为R中的.csv

问题描述 投票:3回答:2

我已经能够在R中创建一个代码,将所有.txt文件批量格式化为.csv文件

setwd("~/Desktop/test/")
filelist = list.files(pattern = ".txt")
for (i in 1:length(filelist)){
    input<-filelist[i]
    output<-paste0(input, ".csv")
    print(paste("Processing the file:", input))
    data = read.delim(input, header = TRUE)   
    setwd("~/Desktop/test/done/")
    write.table(data, file=output, sep=",", col.names=TRUE, row.names=FALSE)
    setwd("~/Desktop/test/")
}

工作得很好,但文件仍然保留名称示例origninal file =“sample1.txt”中的.txt扩展名,然后新文件说“sample1.txt.csv”该文件作为.csv工作,但额外的“.txt”在文件名让我烦恼,有谁知道如何从名称中删除它?谢谢

r string csv export-to-csv
2个回答
5
投票

你可以删除不需要的.txt

output <- paste0(gsub("\\.txt$", "", input), ".csv")

反斜杠将点标记为文字点(如果未标记,则在正则表达式中具有其他含义)。反斜杠必须加倍,因为R试图逃避单个反斜杠。美元符号表示字符串的结尾,因此只删除文件名末尾的“.txt”。


1
投票
write.table(filelist,file=paste0("~/Desktop/test/done/",sub(".txt","",filelist[i]),".csv"),row.names=F,colnames=T,quote=F,sep=",")

替代帮助:

setwd("~/Users/Rio/Documents/Data/")
FILES <- list.files( pattern = ".txt")

for (i in 1:length(FILES)) {
FILE=read.table(file=FILES[i],header=T,sep="\t")
write.table(FILE,file=paste0("~Users/Rio/Documents/Data/",sub(".txt","",FILES[i]),".csv"),row.names=F,quote=F,sep=",")
}
© www.soinside.com 2019 - 2024. All rights reserved.