Data.table: fread Tidak dapat menangani bidang yang salah dikutip jika di luar sampel

Dibuat pada 9 Jul 2017  ·  3Komentar  ·  Sumber: Rdatatable/data.table

Contoh ini:

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)

menghasilkan pesan kesalahan yang menyesatkan:

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

Setidaknya itu tidak crash (yang saya pikir akan diberikan bahwa type[0] akan meningkat dari CT_STRING menjadi tipe yang tidak ada)...

bug fread

Komentar yang paling membantu

@ben519 Dataset Anda hanya berisi 1 baris, jadi jelas bukan karena ketidakteraturan di luar sampel. Saya telah membuat masalah baru untuk kesalahan Anda (lihat tautan di atas)

Semua 3 komentar

Kemungkinan pendekatan:

  • Perkenalkan aturan kutipan baru QR0 (semua aturan lainnya menjadi QR1..QR4). Ini akan menjadi QR default. Di bawah aturan ini, bidang boleh atau tidak boleh dikutip, tetapi tidak ada tanda kutip internal yang diizinkan . Dengan demikian, bidang berikut dapat diterima di bawah QR0: 1,foo,"","bar",,"baz,baz" , sedangkan ini tidak: "foo""bar","foo\"bar",foo"bar,f"oo,bar" .
  • Saat membaca file, jika beberapa bidang bertipe STRING dan tidak dapat dibaca di bawah QR saat ini, maka:

    • Jika saat ini kita berada di QR0 -- benturkan QR hingga bidang dapat dibaca, lalu lanjutkan memindai file;

    • Jika tidak, ketuk QR tetapi kemudian kembali dan pindai ulang semua bidang string (karena arti tanda kutip telah berubah dalam data yang sudah dibaca).

  • Benjolan QR memiliki hierarki berikut: QR0 -> {QR1|QR2|QR3} -> QR4 .

Saya juga mengalami ini, tetapi mendapatkan kesalahan.

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 Dataset Anda hanya berisi 1 baris, jadi jelas bukan karena ketidakteraturan di luar sampel. Saya telah membuat masalah baru untuk kesalahan Anda (lihat tautan di atas)

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

jameslamb picture jameslamb  ·  3Komentar

st-pasha picture st-pasha  ·  3Komentar

MichaelChirico picture MichaelChirico  ·  3Komentar

rafapereirabr picture rafapereirabr  ·  3Komentar

franknarf1 picture franknarf1  ·  3Komentar