Пространства имен в пакетах R - PullRequest
56 голосов
/ 07 декабря 2010

Как люди узнают о том, как дать пакету R пространство имен?Я нахожу документацию в «R Extensions» прекрасной, но я не совсем понимаю, что происходит, когда переменная импортируется или экспортируется - мне нужно руководство для манекена по этим директивам.

Как вы решаете, что экспортируется?Это просто все, что действительно не должно требовать синтаксиса pkg ::: var?А как насчет импорта?

Упрощает ли импорт, чтобы гарантировать, что использование других функций пакета не будет запутано, когда имена функций перекрываются?

Есть ли особые соображения для классов S4?

Пакеты, с которыми я знаком, которые используют пространства имен, такие как sp и rgdal, довольно сложны - есть ли простые примеры, которые могли бы прояснить ситуацию?

Ответы [ 5 ]

37 голосов
/ 08 декабря 2010

У меня есть начало ответа на вики devtools: http://adv -r.had.co.nz / Namespaces.html

24 голосов
/ 06 января 2013

Несколько лет спустя здесь ....

Я объединил выводы из Chambers, других постов StackOverflow и множества изменений в R: http://blog.obeautifulcode.com/R/How-R-Searches-And-Finds-Stuff/

Речь идет не столько о реализации NAMESPACE / IMPORTS / DEPENDS, сколько о назначении этих структур. Ответы на некоторые ваши вопросы.

14 голосов
/ 07 декабря 2010

Самое ясное объяснение, которое я прочитал, содержится в программном обеспечении для анализа данных Джона Чамберса: программирование с использованием R , стр. 103. Я не знаю ни одного бесплатного онлайн-объяснения, которое лучше, чем вы ».мы уже нашли в руководстве по расширениям R.

11 голосов
/ 07 декабря 2010

Вы также можете выбрать простую маленькую упаковку и следовать ей.

Я почти случайно посмотрел на digest , который является одним из моих небольших пакетов. Я загружаю (маленькую) динамическую библиотеку и экспортирую один символ, функцию digest(). Вот содержимое файла NAMESPACE:

## package has dynamic library
useDynLib(digest)

## and one and only one core function
export(digest)

Посмотрите на остальные исходные файлы и, возможно, попробуйте прочитать Написание расширений R , а также посмотрите на пример, и проведите несколько экспериментов.

1 голос
/ 05 декабря 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...