se / else constrói funções internas e externas
Quando olho para as funções R, geralmente encontro a seguinte estrutura:
f <- function(exp=T) {
if (exp)
a <- 1
else
a <- 2
}
f()
f(F)
Isso será executado sem erro. Mas a execução do código da função interna gera um erro, já que R provavelmente assume que a instrução foi concluída após a primeira atribuiçãoa <- 1
e não pode lidar com o seguinte.
exp=T
if (exp)
a <- 1
else
a <- 2
Agora, isso faz sentido para mim, mas eu ainda gostaria de entender por que o comportamento do código executado difere quando executado dentro ou fora de uma função.