2016-06-16 7 views
0

おそらくかなり単純な答えですが、ループ内で複数の.txtファイルを.csvファイルに変換するときに問題がありました。私はそれらをマージまたは追加したくない、71個の.txtファイルを71個の.csvファイルに変換するだけです。ループ:複数の.txtを単一のディレクトリで.csvに変換する[Using 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" 

フォーマットがすべて失敗しています。

アドバイス/何が間違っていますか?

乾杯とありがとうございます。あなたは常にあなたの要件ごとにread.tableをしてwrite.csv機能でパラメータを追加することができます

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)) 
}) 

答えて

2

これは基本的なソリューションです。

グレゴールさんのコメントごとに書かれたファイル名編集

+0

たぶん 'サブ(パターン= "\\。のtxt $" は、交換= ".CSV"、X = x)'は代わりに 'ペーストの()'について書き込まれたファイル名。古い拡張を削除し、スペースを挿入せずに '.csv'で置き換えたいとします。 – Gregor

+0

ありがとう、私の答えを変更! – Sumedh

+0

SumedhとGregorに感謝します!あなたのコメントの組み合わせは完璧に機能しました。 –

関連する問題