#r #roxygen2
#r #roxygen2
Вопрос:
Я создаю пакет и получаю сообщение об ошибке, в котором говорится, что функция не является экспортированным объектом пакета. В скрипте R я использовал тег @export для экспорта функции, однако, когда я выполняю roxigenize с помощью document() или roxygen(), функция не экспортируется в пространство имен (хотя файл Rmd для этой функции создается).
Комментарии:
1.
your_package:::your_function
Работает ли после загрузки вашего пакета?2. Да, это так. Однако, как я читал, этого делать не предлагается @jakub
3. Действительно. Просто проверяю. Вы определяете метод для какого-то класса S3? Также может быть полезно опубликовать здесь блок roxygen.
4. Да, это так. Вы имеете в виду, что я должен опубликовать R-скрипт или пространство имен? @jakub
5. @Rospa ваш комментарий сбивает с толку, поскольку он не включает символ @ перед экспортом, и ваше сравнение выглядит идентично (в обоих есть один пробел). Возможно, это было из-за форматирования markdown.
Ответ №1:
У меня была похожая проблема. Оказалось, что внутри моей функции я закомментировал строку, которая начиналась с апострофа (перед ‘Battlestar Galactica’ в моем поддельном примере), поэтому она выглядит следующим образом:
#' @export
getMyFavoriteSciFiShows <- function() {
myFavoriteSciFiShows <-
c('Star Trek Next Generation',
#'Battlestar Galactica',
'Babylon 5')
return(myFavoriteSciFiShows)
}
Это действительно испортило roxygen2 версии 6.0.1, поскольку оно не сигнализировало о каких-либо ошибках, и это то, что оно поместило в мой файл NAMSEPACE:
export("Galactica',")
export(Battlestar)
Комментарии:
1. Спасибо, мне это тоже помогло. У меня сложилось впечатление, что roxygen пытается интерпретировать ЛЮБОЕ появление #’, и это часто приводит к путанице в @export и других вещах.
Ответ №2:
Это случилось со мной, затем я запустил
devtools::document()
и нажмите check
на Build
вкладке, проблема решена.
Я даю этот ответ кому-то, у кого может возникнуть такая же проблема, и ищу это. Это может помочь.