2016-06-16 46 views
0

可能是一個非常簡單的答案,但我很難在一個循環中將一堆.txt文件轉換爲.csv文件。我不想合併或追加它們,只需將71個單獨的.txt文件轉換爲71個單獨的.csv文件即可。Loop:將單個目錄中的許多.txt文件轉換爲.csv文件[使用R]

我在盡我所能來指代採用這種方法的線程我的代碼的其他問題: create a loop: convert .txt to .csv in R

我正在適應它,這是我到目前爲止有:

filelist = list.files(pattern = ".txt") 

for (i in 1:length(filelist)) { 
    cur.input.file <- filelist[i] 
    cur.output.file <- paste0(cur.input.file, ".csv") 
    print(paste("Processing the file:", cur.input.file)) 

    # If the input file has less than 11 rows you will reveive the error message: 
    # "Error in read.table: no lines available in input") 
    data = read.delim(cur.input.file, header = TRUE) 
    write.table(data, file=cur.output.file, sep=",", col.names=TRUE, row.names=FALSE) 
} 

然而,我的結果出來了:

[1] "Processing the file: filename1.txt.txt" 
[1] "Processing the file: filename2.txt.txt" 
[1] "Processing the file: filename3.txt.txt" 
[1] "Processing the file: filename4.txt.txt" 
[1] "Processing the file: filename5.txt.txt" 

和格式都搞砸了。

任何意見/我做錯了什麼?

歡呼聲,謝謝。

回答

2

這是一個基本的解決方案:

filelist <- list.files(pattern = ".txt") 
someVar <- lapply(filelist, function(x) { 
          textfile <- read.table(x) 
          write.csv(textfile, 
         file = sub(pattern = "\\.txt$", replacement = ".csv", x = x)) 
}) 

您可以隨時在根據您的要求和函數read.table功能write.csv添加參數。

每格里的評論編輯書面文件名

+0

也許'子(模式= 「\\。TXT $」,更換= 「.csv」 文件,X = X)的'而不是你的'糊()'爲書面文件名稱。我們希望刪除舊的擴展名,並用'.csv'替換而不插入空格。 – Gregor

+0

謝謝,改變了我的答案! – Sumedh

+0

感謝Sumedh和Gregor!您的評論的組合完美地工作。 –

相關問題