Обычный подход к написанию функций в 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
возвращаются.Один метод предпочтительнее другого и почему так?