2016-04-14 9 views
1

でエスケープコンマをスキップ:私はこのファイルを読み込み、"\,"は新しい列のみ","を示していないことをRに伝えることができますどのように読むのcsvが、私はこのようなcsvファイル持っている文字列

id,name,value 
1,peter,5 
2,peter\,paul,3 

を。

私はそのファイルに400MBを追加する必要があります。

おかげ

+0

このdf < - read.csv( "ファイルへのパス/df.csv"、sep = "、")のようにread.csvとsep = "、"を使用してください。 –

答えて

2

あなたはそれをメモリにファイルを読み込み、その後、前処理するためにreadLines()を使用することができます。

> read.csv(text = gsub("\\\\,", "-", readLines("dat.csv"))) 
    id  name value 
1 1  peter  5 
2 2 peter-paul  3 

別のオプションは、data.tableからfread機能は、システムがそのようコマンドを実行することができるという事実を利用することである:あなたが何か他のものに非分離カンマを変換するために喜んでいる場合は、あなたのような何かを行うことができます最初の議論。そして、あなたは(またはより高速であってもなくてもよい)でそれを読む前に、ファイルのsed操作のような何かを行うことができます:あなたは常に、その後コンマに戻し、一時-区切りを変換するgsub()を使用することができます

> data.table::fread("sed -e 's/\\\\\\,/-/g' dat.csv") 
    id  name value 
1: 1  peter  5 
2: 2 peter-paul  3 

+0

ありがとうございます。最初の解決策は巨大なファイルには遅すぎるので、私は4時間以上後に中止しなければなりませんでした。 2つ目は、123、time = \\、5のような観測値を持つ行をエンカウンターするときに失敗します。エラーは ''期待されるsep( '、')ですが、改行やEOFは987841行のデータを読むときにフィールド3を終了します: '' – spore234

+0

@ spore234 sed式を修正して複数のスラッシュを許可する必要があります。 sed -e '/ \\\\\\ +、/ -/g' dat.csv "' – Thomas

関連する問題