2012-01-17 5 views
2

У меня есть много исходных файлов R. Например, в файлах A.R и C.RB.R загружается через source(). Теперь я хотел бы использовать функции как в A.R, так и в C.R, как я могу избежать поиска B.R? Есть ли какие-либо механизмы защиты, подобные в C/C++?Как предотвратить включение кода источника() R более одного раза?

+3

Ответ почти наверняка положить 'BR' в пакете, а затем загрузить его с' библиотеки () '. – Andrie

+0

хорошо, чтобы сделать его пакет слишком переполнен. Не проще? – RNA

+0

Если нет очевидного способа сделать это, я действительно думаю о аналогичном решении этого: http://stackoverflow.com/questions/7518584/is-there-any-mechanism-in-shell-script-alike -include-охранник-в-с – RNA

ответ

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 
Смежные вопросы