data.table fread()提供不需要的下载消息

时间:2014-07-24 02:33:43

标签: r data.table

我对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一样阅读网址?

1 个答案:

答案 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在文件中传递多个传递,首先获取结构,然后实际读取整个文件。保存下载多次。