2015-05-25 2 views
2

Я создаю R-пакет, и я нахожусь на шаге, где я BUILD.Создание R-пакета: NAMESPACE

Я прочитал Writing R Extensions документацию о NAMESPACE (более конкретно разделы 1.5.1 и 1.5.2 по импорту, экспорту и регистрации S3-метода).

Я беспокоиться об этом шаге, потому что, когда я CHECK мой пакет я получил это предупреждение:

Найдено следующие очевидные методы S3 экспортируются, но не зарегистрированы: резюме print.myClass print.myOtherClass summary.myClass. myOtherClass См. раздел «Регистрация методов S3» в руководстве «Написание R-расширений» .

Любая помощь в расшифровке того, что является следствием не регистрации S3-метода и файла NAMESPACE в целом, сделает мой день.

Благодарим за помощь.

ответ

3

Это не в тему, но я всегда буду отвечать на все вопросы, так как это то, что время от времени сводило меня с ума. Я поставил бы 10: 1, что вы написали что-то вроде

экспорта (print.myClass)

в пространстве имен. Вместо этого вам нужно написать

S3method (печать, MyClass)

+0

Благодаря Клифф, я выяснил, что «правильный» способ регистрации метода является добавление 'S3method (печать, MyClass)' в NAMESPACE файл. Вы знаете, что он делает, чтобы зарегистрировать метод? Похоже, что мой пакет работает нормально, не регистрируя их. Кроме того, у вас есть подсказка для меня о том, как вести регистрацию всех моих методов? На данный момент я редактирую NAMESPACE с помощью блокнота, и я не могу поверить, что нет лучшего способа сделать это. –

+0

Хорошо, я нашел это полезным [ссылка] (http://cran.r-project.org/web/packages/roxygen2/vignettes/namespace.html). У меня до сих пор нет четкого представления о том, что происходит, но оно добирается до нас. –

+1

Как я уверен, вы знаете, что если вы не экспортируете объекты, пользователи не будут иметь к ним доступ. S3-методы экспортируются несколько иначе, и я думаю, причина в том, что R не будет жаловаться, если у вас есть S3-метод без файла .Rd; это универсальная функция, поэтому вам не нужно сообщать пользователю, что она делает. Как вы заметили, если вы не включаете файл .Rd для экспортируемого объекта, вы все равно можете создать свой пакет, и пользователь все равно может использовать этот объект. Но CRAN не принимает пакет, который экспортировал объекты без файлов .Rd. Они будут принимать пакет с S3-методами без файлов .Rd. –