2013-09-25 57 views
0

換句話說:如何獲取函數環境的名稱(而不是它的封閉環境)。如何在不分配給.GlobalEnv時在函數內部使用賦值?

我想分配一個函數的結果給一個函數內的某個名字。該名稱不應出現在GlobalEnv中。儘管如此,我仍在意名稱,因爲我處理deparse(substitute(x)),因此需要了解名稱。

此刻,我只需要創建一個函數內部的環境,我覺得是怎樣的一個變通的:

createList <- function(...,nm="nameString"){ 
myList <- list(...) 
e1 <- new.env() 
assign(nm,myList,envir=e1) 
# obviously this does not make much sense 
# just want to show that the envir thing works 
e1[[nm]] 
} 

有沒有辦法做到這一點更容易?不是結果,而是將變量分配給函數內的某個名稱 。 environment(createList)只是給我回.GlobalEnv,函數本身所在的環境,但我想知道如何調用環境,該函數內的變量居住在。私人?

+1

''有沒有什麼辦法可以做到這一點?「 - 什麼是最終目標? –

+0

Seconding @RicardoSaporta,我懷疑其他人也會跳進去。 – Peyton

+0

最終目標實際上是如何找到命名函數的私有環境的散列。不知道沒有參數的環境()。 –

回答

1

environment()你想要什麼?

createList <- function(...,nm="nameString"){ 
    myList <- list(...) 
    assign(nm,myList,envir=environment()) 
    get(nm) 
} 
+0

對不起我的問題。在不知道我現在知道的情況下,很難問什麼想知道。無論如何,只是在猜測上相當好!我將編輯該問題以幫助未來的Google員工。 –

相關問題