Ответ 1
У меня есть начало ответа на wiki devtools: http://adv-r.had.co.nz/Namespaces.html
Как люди узнают о том, чтобы предоставить пакет R пространства имен? Я нашел документацию в "Расширениях R" в порядке, но я действительно не понимаю, что происходит, когда переменная импортируется или экспортируется. Мне нужно фиктивное руководство к этим директивам.
Как вы решаете, что экспортируется? Это просто все, что действительно не должно требовать синтаксиса pkg: var? Как насчет импорта?
Импорт облегчает для обеспечения того, чтобы ваше использование других функций пакета не путалось, когда имена функций перекрываются?
Существуют ли особые соображения для классов S4?
Пакеты, с которыми я знаком, которые используют пространства имен, такие как sp и rgdal, довольно сложны - есть ли простые примеры, которые могли бы сделать вещи более ясными?
У меня есть начало ответа на wiki devtools: http://adv-r.had.co.nz/Namespaces.html
Несколько лет спустя...
Я обобщил выводы из Chambers, других сообщений StackOverflow и много разборки в R: http://obeautifulcode.com/R/How-R-Searches-And-Finds-Stuff/
Это меньше о внедрении NAMESPACE/IMPORTS/DEPENDS и о цели этих структур. Ответьте на некоторые из ваших вопросов.
Самое ясное объяснение, которое я прочитал, находится в John Chambers Программное обеспечение для анализа данных: программирование с помощью R, стр. 103. Я не знаю никаких бесплатных онлайн-объяснений, которые лучше, чем то, что вы уже нашли в руководстве R Extensions.
Вы также можете выбрать легкий, небольшой пакет и следовать за ним.
Я полу-случайно просмотрел digest, который является одним из моих меньших пакетов. Я загружаю (небольшую) динамическую библиотеку и экспортирую один символ, digest()
. Вот содержимое файла NAMESPACE:
## package has dynamic library
useDynLib(digest)
## and one and only one core function
export(digest)
Посмотрите на остальные исходные файлы и, возможно, попробуйте прочитать "Написание R-расширений", посмотрев на пример и сделайте несколько экспериментов.