В чем разница между assign () и << - в R?

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

14
задан Andrie 26 April 2011 в 06:33
поделиться