是否有可能使用env()
作爲命名空間的替代品,以及如何在添加功能之前檢查環境是否已經存在?如何在現有環境中添加功能
這涉及到這個問題,和Brendan的建議 How to organize large R programs? 我瞭解德克在這個問題點,但發展有時不切實際把功能包。
編輯:這個想法是模仿跨文件的命名空間,因此能夠獨立加載不同的文件。如果之前已經加載了一個文件,則不需要創建環境,只需添加即可。
感謝想法
編輯:那麼想必下面這段代碼將命名空間的其他語言的等價物: - 在以同樣的方式存在的環境
# how to use environment as namespaces
# file 1
# equivalent of 'namespace e' if (!(exists("e") && is.environment(e))) { e <- new.env(parent=baseenv()) }
e$f1 <- function(x) {1}
# file 2
# equivalent of 'namespace e' if (!(exists("e") && is.environment(e))) { e <- new.env(parent=baseenv()) }
e$f2 <- function(x) {2}
我將許多*代碼組織到軟件包中,但使用Hadley的'devtools'軟件包將其加載到環境中。這基本上可以實現您所描述的內容,但是如果需要,我還可以創建並重新使用該包。 (換句話說,在開發過程中,我不需要不斷重建軟件包。) – Andrie