我在使用 R 时曾多次遇到此问题。如果您使用的是 Windows,则可以使用多种方法访问 Internet。您将熟悉 Curl,许多库在后台使用它,例如RCurl 和 httr。
然而,R 默认使用的方法,如 install.packages()、url() 和 file() 操作实际上是基于 WinINet。无需赘述,WinInet 与 Internet Explorer 用于访问 Web 的库相同。
WinINet is more limited in its functionalities than Curl 但是,如果您正在做一些像下载文件这样基本的事情,那么您应该没有问题。
下面您将看到一个示例,说明如何获取使用 httr 编写的脚本并重新执行,以便可以使用 url 等函数完成。
您还应该注意,在 Windows 上,您可以更改 file 和 url 的默认值,以便它们依赖 curl 而不是 WinINet,假设您安装了 curl。
这是一些使用 httr 下载文件的代码
library(httr)
url <- "https://rawgit.com/yoke2/dsxref/master/iris.xlsx"
GET(url, write_disk("iris.xlsx", overwrite=TRUE))
这里是download.file()的等价物
url = "https://vincentarelbundock.github.io/Rdatasets/csv/datasets/iris.csv"
download.file(url, "iris.csv", quiet=TRUE)
这是一些使用 httr 进行 curl GET 操作的代码
我们从https://jsonplaceholder.typicode.com/检索JSON示例
library(httr)
response <- httr::GET('https://jsonplaceholder.typicode.com/todos/1')
content <- httr::content(response)
这是一种依靠url的方法
此方法在 Windows 上将使用 WinINet
library(jsonlite)
u <- url('https://jsonplaceholder.typicode.com/todos/1')
json <- readLines(u, warn = FALSE)
content <- parse_json(json)
您可以通过在任何相关函数(url、file、file.download)上使用help 命令来了解更多有关 WinINet 的信息,这是开始了解的好地方周围的东西。