【发布时间】:2015-01-14 12:11:14
【问题描述】:
考虑以下用法:
tryCatch(log("a"), error = function(e) NULL)
#NULL
现在我正在尝试做同样的事情,但以一种更复杂的方式。我有两个网络存储库,如果第一个由于某种原因不可用,我想从第二个安装包。这是我的做法:
pkg_location <- c("file://main_repo", "file://extra_repo")
lapply(pkg_location, function(repo)
{
tryCatch(install.packages("my-cool-package",
contriburl = repo, dependencies = TRUE),
error = function(e) NULL)
})
我期待NULLs 的列表。但是,错误不会被抑制:
Installing package into ‘...’
(as ‘lib’ is unspecified)
Warning in install.packages :
cannot open compressed file '//extra_repo/PACKAGES',
probable reason 'No such file or directory'
Error in install.packages : cannot open the connection
[[1]]
NULL
[[2]]
NULL
似乎install.packages 不知何故忽略了该机制。这怎么可能,为什么会这样,我该如何解决这个问题?
这里是sessionInfo,可能值得注意的是我正在运行 RStudio 0.98.977。
> sessionInfo()
R version 3.1.2 (2014-10-31)
Platform: x86_64-w64-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=English_United Kingdom.1252 LC_CTYPE=English_United Kingdom.1252
[3] LC_MONETARY=English_United Kingdom.1252 LC_NUMERIC=C
[5] LC_TIME=English_United Kingdom.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] tools_3.1.2
【问题讨论】:
-
它为我捕获了错误。您使用的是哪个版本的 R?
-
请重新启动并包含
sessionInfo()。 -
@RobertKrzyzanowski 添加了
sessionInfo并再次运行新的会话,还是一样。 -
它也忽略了
suppressMessages()和suppressWarnings()。我认为这与它不是原生 R 函数有关 -
这个问题似乎是题外话,因为它是关于 RStudio 打印捕获的错误。
标签: r try-catch packages rstudio