2015-02-18 3 views
1

Я пишу пакет, который построен на основе autoplot() пакета ggplot2. В настоящее время у меня есть функция с именем breg(), которая выступает в качестве конструктора для класса breg; выход которого можно построить с использованием autoplot.breg(). В моей breg() функции, мои команды Roxygen как таковые:Импортирование генерических файлов S3 из другого пакета

#' @export breg 

Тогда в autoplot.breg() У меня есть

#' @import ggplot2 
#' @importFrom ggplot2 autoplot 
#' 
#' @method autoplot breg 
#' @export 

Я не был уверен, что мне нужно @importFrom ggplot2 autoplot если я импортировал весь ggplot2. Однако я отвлекся, в моем NAMESPACE файле у меня есть

S3method(autoplot,breg) 
export(breg) 
import(ggplot2) 
importFrom(ggplot2,autoplot) 

Мой вопрос, почему я до сих пор следующее предупреждающее сообщение:

Warning message: 
In setup_ns_exports(pkg, export_all) : 
    Objects listed as exports, but not present in namespace: autoplot 
+0

Просто чтобы уточнить: вы генерируете файл 'NAMESPACE' из комментариев Roxygen, так? –

+0

Да, я. Я только что удалил «@importFrom ggplot2 autoplot» и, похоже, устранил проблему. – nathaneastwood

+1

Не относится к вашей проблеме, но обратите внимание на следующее из пакетов [* R пакетов] Хэдли (http://r-pkgs.had.co.nz/man.html): «Старые версии roxygen требовали явного' @method общие теги класса для всех методов S3. Начиная с версии 3.0.0, это больше не нужно, так как roxygen2 автоматически выяснит это. «Использование' @ importFrom', насколько я могу судить, полностью устарело. –

ответ

1

@importFrom package generic декларации не требуется, если у вас уже есть @import package.

Проверка поля @export является обязательным для устранения ошибок!

Кроме того, функции с нетрадиционными именами классов (такие как data.frame), которые содержат точку, может потребоваться явные @export generic class заявления, потому что это в противном случае неоднозначно, которые вы имеете в виду: @export breg data.frame или @export breg.data frame.

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