При создании пакета, я получил ошибкуЧто означает «Ошибка в namespaceExport (ns, exports): undefined exports» означает?
Error in namespaceExport(ns, exports) :
undefined exports: FooBarBaz
Что это значит, и как это исправить?
При создании пакета, я получил ошибкуЧто означает «Ошибка в namespaceExport (ns, exports): undefined exports» означает?
Error in namespaceExport(ns, exports) :
undefined exports: FooBarBaz
Что это значит, и как это исправить?
Эта ошибка возникает при попытке экспортировать объект, который не существует. То есть, файл пакета NAMESPACE
содержит строку
export(FooBarBaz)
но FooBarBaz
не существует в пакете.
Один случай, когда может возникнуть эта ошибка, когда вы пытаетесь создать единую справочную страницу для нескольких функций с помощью roxygen2
. В приведенном ниже примере f
и g
являются связанными функциями, которые должны быть задокументированы на странице WidgetUtils
.
#' Widget-related functions
#'
#' Utility functions to assist working with widgets.
#' @param x An input.
#' @return A value.
#' @name WidgetUtils
#' @export
NULL
#' @rdname WidgetUtils
#' @export
f <- function(x)
{
x + 1
}
#' @rdname WidgetUtils
#' @export
g <- function(x)
{
x - 1
}
Ошибка в этом фрагменте кода является включение @export
тега в блоке WidgetUtils
roxygen. Это говорит roxygen для создания строки экспорта в файле NAMESPACE
, но его значение равно NULL
, поэтому экспортировать нечего. Удалив линию @export
, код будет работать правильно.
Будьте осторожны, чтобы не было прокомментированных строк, начинающихся с апострофа!
По невезения, в моей функции я закомментировать строку, которая началась с апострофом (перед «Battlestar Galactica» в моем поддельной примере), так что выглядеть следующим образом:
#' @export
getMyFavoriteSciFiShows <- function() {
myFavoriteSciFiShows <-
c('Star Trek Next Generation',
#'Battlestar Galactica',
'Babylon 5')
return(myFavoriteSciFiShows)
}
Это действительно облажался roxygen2 v 6.0.1, так как он не сигнализировать об ошибках, и это то, что он положил в мой NAMSEPACE файл:
export("Galactica',")
export(Battlestar)
не только мое желаемый экспортное myFavoriteSciFiShows отсутствует, но были добавлены две ошибочных из них. Эти ошибочные могут привести к неопределенному экспорту.
Можете ли вы привести пример того, когда '# '@ export' терпит неудачу? –
@RichieCotton \ @export может не работать [если функция содержит прокомментированную строку, начинающуюся с апострофа] (http://stackoverflow.com/a/42513528/283973). – PeterVermont
@ RichieCotton Я заменил весь свой ответ в ответ на ваш вопрос, как только выяснил, почему у моего экспорта были проблемы. Благодаря! – PeterVermont
Это не поможет мне –
@ MarcinKosiński Если этот ответ не соответствует вашим потребностям, то либо 1) Изучите, что пошло не так в вашем случае, и обновите ответ (это сообщество wiki, поэтому не стесняйтесь изменить) или 2) Задайте новый вопрос, описывающий вашу проблему, и включите минимальный воспроизводимый пример. В противном случае ты просто троллинг. –