2016-06-15 13 views
7

Есть ли способ автоматически импортировать все скрытые функции из пакета, т.е. функции доступны только с package:::fun?Экспорт всех скрытых функций из пакета

Действительно, я внес некоторые изменения в заданную функцию, которая использует довольно много внутренних функций, и я хочу избежать повторного набора package::: везде.

Я посмотрел на функцию базы loadNamespace, но она не прикрепляет не экспортируемые.

+0

Можете ли вы дать еще какой-нибудь фон? Является ли, например, создание ветви пакета и построение его с вашими изменениями? – Roland

ответ

3

Хорошо, я наконец-то нашел своего рода хак с помощью this related post и eval:

# get all the function names of the given package "mypack" 
r <- unclass(lsf.str(envir = asNamespace("mypack"), all = T)) 

# filter weird names 
r <- r[-grep("\\[", r)] 
r <- r[-grep("<-", r)] 

# create functions in the Global Env. with the same name 
for(name in r) eval(parse(text=paste0(name, '<-mypack:::', name))) 

я бы подумал, что были некоторые прекомпилированное функции, чтобы сделать это в любом случае.

+0

, заменяющий 'mypack'' 'stats', выдает ошибку. –

+0

спасибо, что указали это. это связано с некоторыми проводными именами (не знаю, что это за функции), вы должны добавить некоторую фильтрацию, см. мой отредактированный ответ – clemlaflemme

Смежные вопросы