Подтвердить что ты не робот

Пространства имен в пакетах R

Как люди узнают о том, чтобы предоставить пакет R пространства имен? Я нашел документацию в "Расширениях R" в порядке, но я действительно не понимаю, что происходит, когда переменная импортируется или экспортируется. Мне нужно фиктивное руководство к этим директивам.

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

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

Существуют ли особые соображения для классов S4?

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

4b9b3361

Ответ 2

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

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

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

Ответ 4

Вы также можете выбрать легкий, небольшой пакет и следовать за ним.

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

## package has dynamic library
useDynLib(digest)

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

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