我不太熟悉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)
Run Code Online (Sandbox Code Playgroud)
但是fread
提供下载消息,我似乎无法将其关闭
showProgress = FALSE
Run Code Online (Sandbox Code Playgroud)
我可以用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
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释这一点,我可以在fread
论证中将其关闭吗?
它看起来像是在download.file
某个地方发生的呼叫.为什么不fread
以同样的方式阅读URL read.csv
?
2014年10月更新.现在在v1.9.5:
fread
现在传递showProgress=FALSE
给download.file()
asquiet=!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
}
Run Code Online (Sandbox Code Playgroud)
我的猜测是因为fread在文件中进行了多次传递,首先获取结构,然后实际读取整个内容.保存下载多次.