if / else tworzy funkcje wewnętrzne i zewnętrzne

Kiedy patrzę na funkcje R, często znajduję następującą strukturę:

f <- function(exp=T) {
  if (exp)
    a <- 1
  else
    a <- 2
}
f()
f(F)

Będzie to działać bez błędu. Ale wykonanie wewnętrznego kodu funkcji powoduje błąd, ponieważ R prawdopodobnie zakłada, że ​​instrukcja jest zakończona po pierwszym przypisaniua <- 1 i nie może poradzić sobie z innym.

exp=T
if (exp)
  a <- 1
else
  a <- 2

Ma to dla mnie sens, ale wciąż chciałbym zrozumieć, dlaczego zachowanie wykonanego kodu różni się, gdy wykonywany jest wewnątrz lub na zewnątrz funkcji.

questionAnswers(2)

yourAnswerToTheQuestion