data.table 的 fread() 给出不需要的下载消息
Posted
技术标签:
【中文标题】data.table 的 fread() 给出不需要的下载消息【英文标题】:data.table's fread() giving unwanted download message 【发布时间】:2014-07-24 02:33:42 【问题描述】:我对 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
一样读取URL?
【问题讨论】:
:) 你如何想象你可以“直接从 URL 读取”而不是下载?但是如果showProgress
是FALSE
,则将quiet=TRUE
添加到download.file
是一个很好的FR - 你应该将它添加到github。
@eddi - 这有点讽刺,我们昨天进行了那次谈话。 :) 但我也认为quiet = TRUE
选项将是fread
的一个很好的补充。老实说,我并不精通内存、存储、远程服务器等。我只是喜欢棒球和 R,所以我正在编写一种“边走边学”的软件包。
Feature request 提交
@MattDowle - 非常感谢!!
【参考方案1】:
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 对文件进行了多次传递,首先是获取结构,然后实际读取整个内容。节省了多次下载。
【讨论】:
我们需要的是一个quiet = TRUE
传递给download.file
嗯,你可以试试***.com/questions/2458013/…
我想我可以编辑它并称它为别的东西。我将在几个包函数中使用它,所以我可能需要保持原样。
@RichardScriven 伪装成 URL 是什么意思。它是一个存在于远程服务器上的文件。 readLines
和 read.csv
也在下载该文件。他们只是将其作为流处理(您必须能够在内存中读取整个内容)。以上是关于data.table 的 fread() 给出不需要的下载消息的主要内容,如果未能解决你的问题,请参考以下文章
来自 data.table 包的 fread 无法读取小数字
R data.table v1.9.6 中的错误 - 函数“fread”