Data.table: freadサンプル外の場合、誤って引用されたフィールドを処理できません

作成日 2017年07月09日  ·  3コメント  ·  ソース: Rdatatable/data.table

この例:

require(data.table)
DT = data.table(A=rep("abc", 10000), B="def")
DT[110, A:='"a"b']
fwrite(DT, f<-tempfile(), quote=F)
fread(f)

誤解を招くエラーメッセージが表示されます。

Expecting 2 cols but row 0 contains only 1 cols (sep=','). Consider fill=true. <<"a"b,def>>

少なくともクラッシュしません( type[0]CT_STRINGから存在しないタイプにバンプされると私は思っていました)...

bug fread

最も参考になるコメント

@ ben519データセットに含まれる行は1つだけなので、サンプル外の不規則性が原因ではありません。 エラーの新しい問題を作成しました(上記のリンクを参照)

全てのコメント3件

可能なアプローチ:

  • 新しい見積もりルールQR0を導入します(他のすべてのルールはQR1..QR4になります)。 これがデフォルトのQRになります。 このルールでは、フィールドは引用符で囲まれる場合とされない場合がありますが、内部引用符は使用できません。 したがって、QR0では次のフィールドが許容されます: 1,foo,"","bar",,"baz,baz""foo""bar","foo\"bar",foo"bar,f"oo,bar"
  • ファイルを読み取るときに、一部のフィールドがSTRINGタイプであり、現在のQRで読み取ることができない場合、次のようになります。

    • 現在QR0にいる場合は、フィールドが読み取れるまでQRをバンプしてから、ファイルのスキャンを続行します。

    • それ以外の場合は、QRをバンプしますが、戻ってすべての文字列フィールドを再スキャンします(既に読み取られたデータでは引用符の意味が変更されているため)。

  • QRバンプには次の階層があります: QR0 -> {QR1|QR2|QR3} -> QR4

私もこれに遭遇していますが、エラーが発生します。

screen shot 2017-11-03 at 1 59 52 pm

fread("foo.csv", select=c("Date", "Description", "Amount"), header = T)  # error
fread("foo.csv", header = T, verbose = F)  # works

screen shot 2017-11-03 at 1 59 03 pm

@ ben519データセットに含まれる行は1つだけなので、サンプル外の不規則性が原因ではありません。 エラーの新しい問題を作成しました(上記のリンクを参照)

このページは役に立ちましたか?
0 / 5 - 0 評価