безопасно получить переменную из окружающей среды - PullRequest
0 голосов
/ 15 января 2019

Когда я выполняю:

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

Я получаю следующую ошибку:

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

Ошибка правильная в том смысле, что переменная meta не определена в среде, но мое мнение заключалось в том, что safely вернет NULL в этом случае.

Сначала я могу обойти ошибку, используя проверку с помощью exists, но мне было любопытно, почему safely не удается. Я ошибаюсь, считая safely эквивалентом try-catch?

1 Ответ

0 голосов
/ 15 января 2019

Вы неправильно интерпретируете действия функции 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().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...