我正在从data.gov网站下载数据,我在此过程中遇到以下两类错误:
fileUrl <- "http://catalog.data.gov/dataset/expenditures-on-children-by-families"
download.file(fileUrl,destfile=".data/studentdata.csv",method="curl")
Warning message:
In download.file(fileUrl, destfile = ".data/studentdata.csv", method = "curl") :
download had nonzero exit status
我尝试删除其他论坛中建议的方法=“curl”,但我再次收到此新错误
download.file(fileUrl,destfile=".data/studentdata.csv")
Error in download.file(fileUrl, destfile = ".data/studentdata.csv") :
cannot open destfile '.data/studentdata.csv', reason 'No such file or directory'
答案 0 :(得分:1)
我认为您的curl
运作不正常有两个主要因素。
首先,问题出在您的URL上。 fileUrl <- "http://catalog.data.gov/dataset/expenditures-on-children-by-families"
。在您的URL中,未将其引用为csv
文件。因此,即使将目标设置为csv
destfile = ".data/studentdata.csv"
文件,它们也不会起作用
我有一个使用相同代码(不同数据集)获取csv
数据集的示例:
DataURL<- "https://data.baltimorecity.gov/api/views/dz54-2aru/rows.csv?accessType=DOWNLOAD"
(此链接引用的是rows.csv文件)download.file(DataURL, destfile="./data/rows.csv", method="curl")
(使用curl
的方法完全相同) 第二,以前,我遇到了一个问题,即curl
不起作用,即使我使用了指向csv
文件的正确URL也是如此。但是,当我诊断得更深时,我发现了一个有趣的事实,说明为什么我的curl
方法无法正常工作。这是我的R会话程序。我使用了发生错误的32-bit
R。然后,我尝试将会话更改为64-bit
R。令人惊讶的是,当时下载状态为运行中。要查看您的R会话体系结构(无论您使用的是32-bit
还是64-bit
),请输入R:
sessionInfo()
R版本3.5.3(2019-03-11)
平台:x86_64-w64-ming32 / x64(64位)
在以下环境中运行:Windows> = 8 x64(内部版本9200)
您必须将您的R从32-bit
切换到64-bit
,以避免'curl' call had nonzero exit status
。您进入R目录文件夹,然后运行64-bit
R。
如果使用Windows操作系统并将R安装在默认路径文件夹中,则可以运行此C:\Program Files\R\R-3.5.3\bin\x64\R.exe
。 (我使用的是3.5.3版本,因此可能与您的版本不同)
如果您使用的是R-studio,则可以在菜单栏Tools
-> Global Options
-> R version
-> Change
-> {{ 1}}-> Use your machine's default version of R64 (64-bit)
。然后重新启动您的R-studio。
但是,这取决于您的OS体系结构。如果您使用的是OK
操作系统,则必须寻找另一种解决方法。
答案 1 :(得分:0)
所以查看download.file(...)
的代码,如果指定method="curl"
,该函数会尝试使用curl
shell命令。如果您的系统上不存在此命令,则会出现上述错误。
如果您没有指定方法,则默认使用内部R方法进行下载,这显然适用于您的系统。在这种情况下,该函数试图将文件放在.data/studentdata.csv
中,但显然没有.data
目录。尝试取出.
。
当此下载有效时,您将获得text/html
文件,而不是csv文件。您的网址指向网页,而不是下载链接。该页面确实有一个下载链接,但不幸的是它是一个pdf,而不是一个csv。
最后,如果您的目标是将数据放在R中(是吗?),,如果链接实际生成了csv文件,您可以更轻松地使用
df <- read.csv(fileUrl)
答案 2 :(得分:0)
如果我没有弄错,你只需要一个简单的拼写错误。我怀疑你有一个“数据”目录,而不是“.data”目录 - 在这种情况下,唯一的问题是你的destfile字符串需要以“./data”开头,而不是“.data”。
答案 3 :(得分:0)
我遇到了同样的问题。
然后我意识到我忘了创建&#34;数据&#34;目录!
因此,请尝试在fileURL行上方添加此项以首先创建目录。
if(!file.exists("data")){
dir.create("data")
}
此外,如果您正在运行Mac,那么您希望保留method =&#34; curl&#34;下载https文件时。我不相信Windows有这个问题因此建议删除它。
答案 4 :(得分:0)
试试这个: 档案&lt; - 'http://catalog.data.gov/dataset/expenditures-on-children-by-families'
file&lt; - read.csv(file)