安全地从环境中获取变量

时间:2019-01-15 17:32:58

标签: r

执行时:

my_env <- new.env(parent = emptyenv())
test <- purrr::safely(get("meta", envir = my_env))

我收到以下错误:

Error in get("meta") : object 'meta' not found

在环境中未定义meta变量的意义上,该错误为正确,但我的想法是safely将返回{{1 }} 在这种情况下。

我可以通过首先使用NULL进行检查来解决该错误,但我很好奇exists为何失败。我认为safely等同于safely是错误的吗?

1 个答案:

答案 0 :(得分:1)

您误解了safely函数的操作。它实际上是成功的。如果您检查过test的值,则应该看到:

> test
[1] "Error in get(\"meta\", env = my_env) : object 'meta' not found\n"
attr(,"class")
[1] "try-error"
attr(,"condition")
<simpleError in get("meta", env = my_env): object 'meta' not found

要禁止在控制台上看到错误消息,您可以使用options(show.error.messages = FALSE)关闭报告,也可以重定向stderr()的目标。