使用循环将目录中的 .txt 文件转换为 .CSV 文件

Convert .txt files into .CSV files in a directory using a loop

这里有新鲜的生菜,别笑我的问题:

假设我有一个包含 40 个单独的 .txt 文件的文件夹,我想将它们转换为 .csv 格式。 要获得最终产品:一个包含 40 个单独的 .csv 文件的新文件夹。

我看到过类似的问题和他们的代码,但是代码确实 运行 但是 .csv 文件与原始的 .txt 文件完全不同:所有数据都被打乱了。

因为我想保留header,而且我想读取.txt文件中的所有data/rows。我对代码进行了一些外观更改,但仍然没有 运行 并返回警告 "Error in file(file, "rt") :无法打开连接 另外: 警告信息: 在文件(文件,"rt")中: 无法打开文件 'C:/Users/mli/Desktop/All TNFa controls in the training patients ctrl_S1018263__3S_TNFaCHx_333nM+0-1ugml_none.txt':参数无效

我的代码如下:

directory <- "C:/Users/mli/Desktop/All TNFa controls in the training patients"
ndirectory <- "C:/Users/mli/Desktop/All TNFa controls in the training patients/CSV"
file_name <- list.files(directory, pattern = ".txt")
files.to.read <- paste(directory, file_name, sep="\t") 
files.to.write <- paste(ndirectory, paste0(sub(".txt","", file_name),".csv"), sep=",")
for (i in 1:length(files.to.read)) {
  temp <- (read.csv(files.to.read[i], sep="\t", header = T))
  write.csv(temp, file = files.to.write[i])
}

当您在第 4 行和第 5 行粘贴带有文件名的路径时,使用 /,以字符串形式获取新路径。 sep 值是函数将多个字符串粘贴在一起时将放置的值。

> paste('hello','world',sep=" ")
[1] "hello world"

> paste('hello','world',sep="_")
[1] "hello_world"

这与您在 read.csv 中需要的 sep 值不同,它定义了 csv 文件每列之间的字符。