R 语言 download.file 的几点知识

在 r 语言中,无论是安装包还是下载数据,

download.file
函数都是一个常用的工具。如果你在使用过程中遇到中断或异常,了解
download.file
函数的详细信息将有助于你判断问题是出在远程源服务器、自身服务器还是网络故障上,甚至可以帮助你找到替代的下载方法。

上面的链接提供了关于

download.file
函数的详细文档,特别是
method
参数的设置和理解非常值得关注。

BT娃小提示

当选择

method="auto"
(默认值)时,行为会根据平台有所不同:

在类 Unix 系统中,默认使用 "libcurl" 方法,除了对于 file:// URL,使用 "internal" 方法。"libcurl" 使用的是同名的外部库(https://www./link/e103d1ed1d6c41b0f098ff377dde2966)。

在 Windows 中,默认使用 "wininet" 方法,除了对于 ftps:// URL,会尝试使用 "libcurl" 方法。"wininet" 方法使用的是操作系统的一部分 WinINet 函数。

在 Windows 上,"libcurl" 方法是可选的,可以通过

capabilities("libcurl")
查看你的构建是否支持。它使用的是同名的外部库(https://www./link/e103d1ed1d6c41b0f098ff377dde2966),R 可以与之编译。

关于

download.file
的一些理解和注意点:

download.file
函数来自 R 的 utils 包,可以通过
packageVersion("utils")
查看该包的版本。

在类 Unix 系统中,默认使用 "libcurl" 方法,而对于 file:// 链接,使用 "internal" 方法。

在 Windows 中,默认使用 "wininet" 方法,对于 ftps:// 资源会尝试使用 "libcurl" 方法。

可用的下载方法包括 "internal"、"wininet"(仅限 Windows)、"libcurl"、"wget" 和 "curl",还有一个 "auto" 值。

需要注意的是,"libcurl" 和 "curl" 并不是同一个东西。

相同点:

curl 和 libcurl 都可以使用多种协议传输文件,包括 HTTP, HTTPS, FTP, FTPS, GOPHER, LDAP, DICT, TELNET 和 FILE 等。

不同点:

curl 是命令行工具,可以通过 shell 或脚本运行,底层使用的是 libcurl 库。

libcurl 是一个库,通常与其他程序绑定使用,例如命令行工具 curl 就是封装了 libcurl 库。因此,你也可以在自己的程序或项目中使用 libcurl 以获得类似 curl 的强大功能。

可以通过

options(download.file.method = "libcurl")
的方式设置全局下载方法。参考:https://www./link/ce1088f5f083f849cfded441f0a38332