Enlace de variables externas en R

Supongamos que tengo la siguiente función:

g = function(x) x+h

Ahora, si tengo en mi entorno un objeto llamadoh, No tendría ningún problema:

h = 4
g(2)

## should be 6

Ahora tengo otra función:

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

Yo esperaría:

rm(h)
f()

## should be 5, isn't it?

En cambio, recibo un error

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

Yo esperaríag para ser evaluado dentro del entorno def, de manera que lah enf estará vinculado a la h en g, como era cuando ejecutég dentro de.GlobalEnv. Esto no sucede (obviamente). alguna explicación por qué? cómo superar esto para que la función dentro de la función (p. ej.g) se evaluará utilizando el entorno envolvente?

Respuestas a la pregunta(1)

Su respuesta a la pregunta