我对data.table的fread
功能不太熟悉,但它可以快速读取我的数据,所以现在我很感兴趣。在URL "http://www.retrosheet.org/CurrentNames.csv"
,有一个简单的csv文件。以下两个调用工作正常。
readLines("http://www.retrosheet.org/CurrentNames.csv", n = 2)
# [1] "ANA,LAA,AL,,Los Angeles,Angels,,4/11/1961,9/1/1965,Los Angeles,CA"
# [2] "ANA,CAL,AL,,California,Angels,,9/2/1965,9/29/1968,Anaheim,CA"
rcsv <- read.csv("http://www.retrosheet.org/CurrentNames.csv", header = FALSE)
但是fread
正在发送下载消息,我似乎无法将其关闭
showProgress = FALSE
我可以使用suppressMessages()
,但我真的不想。
library(data.table)
dtf <- fread("http://www.retrosheet.org/CurrentNames.csv",
header = FALSE, showProgress = FALSE)
# trying URL 'http://www.retrosheet.org/CurrentNames.csv'
# Content type 'text/plain' length 7729 bytes
# opened URL
# ==================================================
# downloaded 7729 bytes
任何人都可以解释一下,我可以在fread
参数中将其关闭吗?
看起来某个地方发生了对download.file
的调用。为什么fread
不会像read.csv
一样阅读网址?
答案 0 :(得分:7)
2014年10月更新。现在在v1.9.5:
fread
现在将showProgress=FALSE
传递给download.file()
quiet=!showProgress
。感谢Karl Broman和Richard Scriven提出的提出问题的请求#741。
以前的回答......
它确实下载了文件,这是执行它的代码的一部分。
else if (substring(input, 1, 7) %chin% c("http://", "https:/",
"file://")) {
tt = tempfile()
on.exit(unlink(tt), add = TRUE)
download.file(input, tt)
input = tt
}
我的猜测是因为fread在文件中传递多个传递,首先获取结构,然后实际读取整个文件。保存下载多次。