【问题标题】:change .txt to .csv in R在 R 中将 .txt 更改为 .csv
【发布时间】:2016-12-25 16:06:44
【问题描述】:

我已经能够在 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/")
}

效果很好,但文件名称中仍保留 .txt 扩展名 示例原始文件 =“sample1.txt”,然后新文件显示为“sample1.txt.csv” 该文件作为 .csv 文件工作,但文件名中额外的“.txt”让我很烦,任何人都知道如何将其删除姓名? 谢谢

【问题讨论】:

  • 您的原始文本文件也有额外的.txt,如sample1.txt.txt。所以我猜你的inputsample1.txt.txt,然后通过代码它显示你sample1.txt.csv 你输入的文件名有额外的.txt 所以它也会出现在输出中,正如你在output 中所说的那样paste0(input,'.csv')
  • output&lt;-paste0(input, ".csv") 更改为output&lt;-paste0(strsplit(input, '\\.')[[1]][1], ".csv") 或类似的东西...
  • @KarstenW.'s answer below is clean :)

标签: r string csv export-to-csv


【解决方案1】:

你可以删除不需要的.txt

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

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

【讨论】:

  • 非常感谢您提供的代码,并且解释效果很好
【解决方案2】:
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=",")
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-26
    • 2013-03-16
    • 2021-08-25
    • 2016-05-16
    • 1970-01-01
    • 2018-11-21
    • 2016-09-21
    相关资源
    最近更新 更多