2016-07-28 6 views
1

Le code:Affectation à un environnement dans R

env <- new.env() 
assign("X", value = 2, pos = env) 
eval(X, envir = env) 

résultats dans une erreur: "X not found"

Cependant:

ls(envir = env) 

renvoie "X"

Pourquoi l'eval ne retourne-t-il pas 2?

Répondre

4

Cela devrait fonctionner:

eval(quote(X),envir=env) 

problème est qu'il tente d'évaluer X, puis le transmettre à eval mais X n'a ​​pas de valeur dans votre environnement principal afin qu'il donne une erreur. En mettant quote dit à eval de chercher X en env

+3

techniquement, 'quote (X)' dit 'eval' * de ne pas chercher encore X (c'est-à-dire dans l'environnement actuel); 'envir = env' est ce qui lui dit de regarder dans' env', une fois qu'il obtient à regarder ... –

+3

Vous pouvez également utiliser 'evalq (X, envir = env)' comme un "raccourci" pour la citation – MrFlick

+0

@ BenBolker Bon point j'étais paresseux – Carl