2017-06-21 1 views
2

サンプル入力タブ区切りのテキストファイル。このソースファイルからの不良データがあることに注意してください。私はRにこれを読んだとき。だから、二重引用符文字で行が続く1つの完全な空白行が、その後、次の行の良いデータを続けている。Rはデータテーブルに読み込まれたときに不正な行データが表示されないが、ファイルに書き込まれる

id  ca  cb  cc  cd 
1  hi  bye hey nope 
2  ab  cd  ef  "quoted text here" 
3  gh  ij  kl  "quoted text but end quote is 2 lines down 

" 
4  mn  op  qr  lalalala 

、read.csvを使用してみましたし、関数freadは、/関数freadのための 'blank.lines.skip = T' なしで、私は次のようなデータテーブルを取得:

id  ca  cb  cc  cd 
1 1  hi  bye hey nope 
2 2  ab  cd  ef  quoted text here 
3 3  gh  ij  kl  quoted text but end quote is 2 lines down 
4 4  mn  op  qr  lalalala 

データを表に「悪い」行は表示されません。いいよ!しかし、私がこのデータテーブルを書き出すために行ったとき、write.tableとfwriteの両方を試してみましたが、/ nothing /の2行と二重引用符は、入力ファイルに表示されたように書き出されます!書き出す前に空のデータをクリアするために

dt[complete.cases(dt),], 
dt[!apply(dt == "", 1, all),] 

が、それは何もしません: 私はやってみました。データテーブルには、これらの4つのエントリしか表示されません。 Rはこの「不足している」データをどこに保持していますか?その悪いデータをどうやって取り除くことができますか?

これはソースからの悪い出力です(good ol 'US Govt!)、これはxlsファイルから保存したと思いますが、これは列にフォーマットが正しくないためにテキストファイルにこの間違いを含めることはできますが、明らかに出力をチェックしませんでした。

答えて

1

読み込み機能を使って考えると、その列(cd)データが引用されているため、実際には文字列の最後に2つの改行文字がありますが、これはデータテーブル要素には表示されません!その要素を書き出すことで、これらの2つの改行が作成されます。 私が行うために必要なすべてれました:

dt$cd <- gsub("[\r\n","",dt$cd) 

とそれはそれを修正し、ファイルに書き込まれた出力は今、データの正しい行があります。 私は私の質問を取り除くことができればいいと思うが、いつか誰かが同じ "問題"に出会うだろう。私は質問を掲示する前に一歩踏み込んで考えなければならなかった。

+0

これは実際に問題を引き起こす埋め込み改行のかなりきちんとした例です。私は数え切れないほど多くの時間が焼かれました。 – thelatemail

関連する問題