2014-09-30 60 views
0

我使用一些用戶定義的小函數作爲助手。這些功能都存儲在R_HOME_USER/helper目錄中。到目前爲止,這些功能都來自R啓動。整體方法就像`lapply(my.helper.list,source)。我想現在這些功能來源,但不會出現在我的環境,因爲它們污染它。在新環境中R用戶定義的函數

第一個乾淨的方法是用我所有的幫手建立一個包。現在,我不想遵循這種方法。第二種方法是用一個前導點命名這些幫助者。這讓我不得不運行R > .helper1()

最好的辦法是在特定的和可訪問的環境中定義這些助手,但我搞亂了代碼。我的想法是首先創建一個新的環境:

.helperEnv <- new.env(parent = baseenv()) 
attach(.helperEnv, name = '.helperEnv') 

精細,R > search()回報「helperEnv」列表中的。然後我運行:

assign('helper1', helper1, envir = .helperEnv) 
rm(helper1) 

精細,ls(.helperEnv)回報「輔助函數,」這個功能並不在我的環境再出現。 問題是我無法運行helper1(找不到對象)。我想我不在正確的軌道上,並會欣賞一些提示。

+4

如果你要經歷的試圖建立一個獨立的環境中的麻煩,爲什麼不做包嗎?許多人有這些類型的輔助功能的個人R包。 – hrbrmstr 2014-09-30 10:44:01

+0

@hrbrmstr做的包是下一步。 – gabx 2014-09-30 11:27:56

回答

1

我想你應該在你的電話的pos參數爲負數分配給attach

.helperEnv <- new.env() 
    .helperEnv$myfunc<-function(x) x^3+1 
    attach(.helperEnv,name="helper",pos=-1) 
    ls() 
    #character(0) 
    myfunc 
    #function(x) x^3+1 
+1

就像一個魅力 – gabx 2014-09-30 11:24:01

相關問題