查询Web资源

依赖于访问Web资源的软件包需要仔细编写。Web资源可以更改位置,可以暂时不可用,或者可以非常慢访问和检索。查询Web资源的功能应在优雅地预测和处理此类情况 - 当资源在合理的时间框架中不可用时,会快速且清晰地失败。一些可避免的问题生物体包代码包括无限循环,使用所有可用R.连接和不清楚错误消息。

指导原则

记住这一点生物体包装横跨多个操作系统建在夜间,并且用户从易于运行的Vignettes和示例中受益。

  1. 下载合理尺寸的文件。采用系统时间()估计下载时间。记住包裹应该需要不到5分钟运行r cmd check --no-build-gignettes

  2. 设置函数尝试URL的次数限制。避免而()没有保证终止的陈述。这些成为无限循环,最终导致构建系统超时s。

  3. 提供信息丰富的错误消息。

资源查询模板

此函数可以用作适当的资源检索的模板。它试图在失败之前检索一个或多次资源,并将其作为参数:

返回值是检索到的资源。如果资源检索失败,则该函数表示故障,包括最后一次尝试的条件(错误)消息。警告以正常方式传播给用户。

Geturl < - 函数(URL,Fun,...,N.Tries = 1L){n.tries < -  As.Integer(n.tries)stopifnot(长度(n.tries)== 1L,!is.na(N.Tries.)) while (N.TRIES > 0L) { result <- tryCatch(FUN(URL, ...), error=identity) if (!inherits(result, "error")) break N.TRIES <- N.TRIES - 1L } if (N.TRIES == 0L) { stop("'getURL()' failed:", "\n URL: ", URL, "\n error: ", conditionMessage(result)) } result }

基础R.功能使用URL()连接方面getOption(“超时”);看到?网址有关详细信息。

乐趣可以实现以检索资源并测试状态,例如,

有趣< - 函数(URL,......){response < -  httr :: get(URL,超时(getOption(“超时”)),......)stop_for_status(响应)响应}