我从fread得到一个错误:
内部错误:检测eol时ch> eof
尝试使用R 3.2.0读取从https服务器下载的csv文件时。我在Github上找到了相关的东西,https://github.com/Rdatatable/data.table/blob/master/src/fread.c,但不知道如何使用它,如果有的话。谢谢你的帮助。
补充信息:数据是从这里下载的:
fileURL <- "https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Fss06pid.csv"
然后我用了
download.file(fileURL, "Idaho2006.csv", method = "Internal")
问题是download.file
不能与https一起使用method=internal
,除非你在Windows上并设置了一个选项。由于fread
在传递URL而不是本地文件时使用download.file
,因此它将失败。您必须手动下载文件,然后从本地文件打开它。
如果您使用的是Linux或已经拥有以下任何一项,那么请改为使用method=wget
或method=curl
如果你在Windows上并且没有,也不想下载它们,那么在你的setInternet2(use = TRUE)
之前做download.file
http://www.inside-r.org/r-doc/utils/setInternet2
例如:
fileURL <- "https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Fss06pid.csv"
tempf <- tempfile()
download.file(fileURL, tempf, method = "curl")
DT <- fread(tempf)
unlink(tempf)
要么
fileURL <- "https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Fss06pid.csv"
tempf <- tempfile()
setInternet2 = TRUE
download.file(fileURL, tempf)
DT <- fread(tempf)
unlink(tempf)
fread()
现在使用curl
包下载文件。这似乎工作得很好:
require(data.table) # v1.9.6+
fread(fileURL, showProgress = FALSE)
根据我的经验解决此问题的最简单方法是从https中删除s。同时删除不需要它的方法。我的操作系统是Windows,我尝试了以下代码并且工作正常。
fileURL <- "http://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Fss06pid.csv"
download.file(fileURL, "Idaho2006.csv")