Обычный подход к написанию функций в R (как я понимаю) заключается в том, чтобы избежать побочных эффектов и вернуть значение из функции.
contained <- function(x) {
x_squared <- x^2
return(x_squared)
}
В этом случае возвращается значение, вычисленное из ввода в функцию. Но переменная x_squared
недоступна.
Но если вам нужно нарушить этот базовый принцип функционального программирования (и я не уверен, насколько серьезным R является эта проблема) и вернуть объект из функции, у вас есть два варианта.
escape <- function(x){
x_squared <<- x^2
assign("x_times_x", x*x, envir = .GlobalEnv)
}
Возвращаются оба объекта x_squared
и x_times_x
. Является ли один метод предпочтительным для другого и почему так?