2016-07-28 60 views
1

的代碼:分配到環境中的R

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

結果在一個錯誤: 「X未找到」

然而:

ls(envir = env) 

返回 「X」

爲什麼eval不返回2?

回答

4

這應該工作:

eval(quote(X),envir=env) 

問題是它試圖評估X,然後把它傳遞給eval但X在你的主環境沒有價值,因此給出了一個錯誤。把quote告訴EVAL尋找Xenv

+3

技術上,'報價(X)''告訴* eval'不找'X'但*(即在當前的環境); 'envir = env'告訴它看看'env',一旦它開始尋找... –

+3

你也可以使用'evalq(X,envir = env)'作爲引用的「快捷方式」 – MrFlick

+0

@ BenBolker好點我是懶惰 – Carl