Я пишу пакет R с циклом tryCatch()
следующей формы, в которой я сначала пытаюсь подобрать модель, используя подверженный ошибкам метод, но затем использую более безопасный метод, если первый не удается:
# this function adds 2 to x
safe_function = function(x) {
tryCatch( {
# try to add 2 to x in a stupid way that breaks
new.value = x + "2"
}, error = function(err) {
message("Initial attempt failed. Trying another method.")
# needs to be superassignment because inside fn
assign( x = "new.value",
value = x + 2,
envir=globalenv() )
} )
return(new.value)
}
safe_function(2)
Этот пример работает как задумано.Однако использование assign
вызывает проверку при проверке пакета на готовность к CRAN:
Found the following assignments to the global environment
Аналогичная проблема возникает, если я заменю assign
на <<-
.Что я могу сделать?