mencoba menggunakan fread() pada file .csv tetapi mendapatkan kesalahan internal

Saya mendapatkan kesalahan dari ketakutan:

Kesalahan internal: ch>eof saat mendeteksi eol

ketika mencoba membaca file csv yang diunduh dari server https, menggunakan R 3.2.0. Saya menemukan sesuatu yang terkait di Github, https://github.com/Rdatatable/data.table/blob/master/src/fread.c, tetapi tidak tahu bagaimana saya bisa menggunakan ini, jika ada. Terima kasih atas bantuannya.

Info tambahan: data diunduh dari sini:

fileURL <- "https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Fss06pid.csv"

lalu saya gunakan

download.file(fileURL, "Idaho2006.csv", method = "Internal") 

person Jane Quigley    schedule 10.07.2015    source sumber
comment
dapatkah Anda menunjukkan kode Anda dan mungkin data untuk mereproduksi kesalahan? lihat stackoverflow.com/questions/5963269/ untuk memberikan contoh yang dapat direproduksi.   -  person mts    schedule 10.07.2015
comment
tolong tunjukkan juga kode Anda, terutama cara Anda memanggil fread yang sepertinya memberi Anda kesalahan   -  person mts    schedule 10.07.2015
comment
mts, kali ini berfungsi dengan benar, jadi menurut saya mungkin masalahnya adalah cara saya menggunakan fread (mungkin karena dengan bodohnya saya tidak menetapkannya ke suatu objek, misalnya DT ‹- fread(Idaho.csv). Terima kasih atas kesabaran Anda dengan seorang pemula.   -  person Jane Quigley    schedule 10.07.2015


Jawaban (3)


Masalahnya adalah download.file tidak berfungsi dengan https dengan method=internal kecuali Anda menggunakan Windows dan menetapkan opsi. Karena fread menggunakan download.file saat Anda meneruskan URL dan bukan file lokal, itu akan gagal. Anda harus mengunduh file secara manual lalu membukanya dari file lokal.

Jika Anda menggunakan Linux atau sudah memiliki salah satu dari yang berikut ini, lakukan method=wget atau method=curl sebagai gantinya

Jika Anda menggunakan Windows dan tidak memiliki keduanya serta tidak ingin mengunduhnya, lakukan setInternet2(use = TRUE) sebelum download.file

http://www.inside-r.org/r-doc/utils/setInternet2

Misalnya:

fileURL <- "https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Fss06pid.csv"
tempf <- tempfile()
download.file(fileURL, tempf, method = "curl")
DT <- fread(tempf)
unlink(tempf)

Or

fileURL <- "https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Fss06pid.csv"
tempf <- tempfile()
setInternet2 = TRUE
download.file(fileURL, tempf)
DT <- fread(tempf)
unlink(tempf)
person Dean MacGregor    schedule 10.07.2015

fread() sekarang menggunakan paket curl untuk mengunduh file. Dan ini tampaknya berfungsi dengan baik atm:

require(data.table) # v1.9.6+
fread(fileURL, showProgress = FALSE)
person Arun    schedule 17.09.2015

Cara termudah untuk memperbaiki masalah ini menurut pengalaman saya adalah dengan menghapus s dari https. Hapus juga metode yang tidak Anda perlukan. OS saya adalah Windows dan saya telah mencoba kode berikut dan berfungsi.

fileURL <- "http://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Fss06pid.csv"
download.file(fileURL, "Idaho2006.csv") 
person ksaittis    schedule 25.02.2016