Vinculando variáveis externas em R

Suponha que eu tenha a seguinte função:

g = function(x) x+h

Agora, se eu tiver no meu ambiente um objeto chamadoh, Eu não teria nenhum problema:

h = 4
g(2)

## should be 6

Agora, tenho outra função:

f = function() {
    h = 3
    g(2)
}

Eu esperaria:

rm(h)
f()

## should be 5, isn't it?

Em vez disso, recebo um erro

## Error in g(2) : object 'h' not found

eu esperariag para ser avaliado dentro do ambiente def, para que oh nof será ligado ao h em g, como era quando eu executeig dentro do.GlobalEnv. Isso não acontece (obviamente). alguma explicação por quê? como superar isso para que a função dentro da função (por exemplo,g) serão avaliados usando o ambiente anexo?

questionAnswers(1)

yourAnswerToTheQuestion