2012-01-17 54 views
2

我有很多R源文件。例如,在A.RC.R文件中,通過source()加載B.R。現在我想使用A.RC.R中的函數,我怎樣才能避免重複採購B.R?在C/C++中是否有類似的保護機制?如何防止source()R代碼被多次包含?

+3

答案几乎肯定是把'BR'在包中,然後用'庫加載它( )'功能。 – Andrie 2012-01-17 20:11:31

+0

好吧,使它成爲一個包太過於過分。沒有簡單的方法? – RNA 2012-01-17 20:25:37

+0

如果沒有明顯的方法做到這一點,我實際上正在考慮類似的解決方案這一個:http://stackoverflow.com/questions/7518584/is-there-any-mechanism-in-shell-script-alike -include後衛 - 在-C – RNA 2012-01-17 20:29:11

回答

7

如果B.R已經有一個相當獨特的名字的函數或數據集,你可以用它作爲守衛。否則,只是定義一個:

BR

B_is_loaded <- TRUE 
# The normal B stuff 

AR:

if(!exists("B_is_loaded")) source("B.R") 
# Now you can call the stuff in B