2016-03-02 5 views
3

У меня есть файл: import_packages.r в моем проекте, содержащий следующее:R: roxygen2, импортированные пакеты не появляются в пространстве имен

#' @import reshape2 
#' @import ggplot2 
#' @import DESeq2 
#' @import geneplotter 
#' @import survcomp 
#' @import gplots 
#' @import pheatmap 
#' @import RColorBrewer 

Когда я devtools:document() эти пакеты не отображаются в файле NAMESPACE и они фактически не импортируются. Я что-то не так?

+0

иногда он помогает удалить файл «NAMESPACE», чтобы снова заново создать файл. – drmariod

+0

@drmariod не помогло. пакеты по-прежнему не отображаются в NAMESPACE – Tonja

ответ

5

Если ваш файл содержит только те строки, которые вы предоставили, он игнорируется roxygen2. Вы должны добавить строку после кода roxygen, который содержит только NULL. Таким образом, следующее должно работать:

#' @import reshape2 ggplot2 DESeq2 geneplotter 
#' @import survcomp gplots pheatmap RColorBrewer 
NULL 

Я также уменьшил количество строк, чтобы показать вам, как несколько пакетов могут быть импортированы с одним использованием @import. Но для roxygen это не имеет значения, на сколько строк вы распространяете пакеты.

Я думаю, причина в том, что разделы roxygen должны быть связаны с некоторым R-объектом. Например, документация функции связана с соответствующим функциональным объектом. Поскольку вы не хотите иметь импорт, связанный с функцией, вы можете связать их с NULL, который также является объектом R.

Как следует из hadley, не рекомендуется полностью импортировать эти пакеты, потому что вы можете столкнуться с конфликтами имен. Следующие две альтернативы, как правило, лучше:

  • Reference функция их явного имени пакета и :: оператор: reshape2::melt() Это имеет дополнительное преимущество, что вы сразу видите, из которого пакет приходит функция.

  • Импорт только те функции, которые вам нужно из пакета с помощью @importFrom:

    #' @importFrom reshape2 melt cast 
    

Вы можете найти более подробную информацию here.

+2

Также стоит отметить, что полное импортирование многих пакетов не рекомендуется. – hadley

+0

@hadley Спасибо за вход. Я добавлю несколько слов о лучших практиках позже. – Stibu