2014-11-02 3 views

ответ

5

Эта ошибка возникает при попытке экспортировать объект, который не существует. То есть, файл пакета 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, код будет работать правильно.

+0

Это не поможет мне –

+2

@ MarcinKosiński Если этот ответ не соответствует вашим потребностям, то либо 1) Изучите, что пошло не так в вашем случае, и обновите ответ (это сообщество wiki, поэтому не стесняйтесь изменить) или 2) Задайте новый вопрос, описывающий вашу проблему, и включите минимальный воспроизводимый пример. В противном случае ты просто троллинг. –

0

Будьте осторожны, чтобы не было прокомментированных строк, начинающихся с апострофа!

По невезения, в моей функции я закомментировать строку, которая началась с апострофом (перед «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 отсутствует, но были добавлены две ошибочных из них. Эти ошибочные могут привести к неопределенному экспорту.

+0

Можете ли вы привести пример того, когда '# '@ export' терпит неудачу? –

+0

@RichieCotton \ @export может не работать [если функция содержит прокомментированную строку, начинающуюся с апострофа] (http://stackoverflow.com/a/42513528/283973). – PeterVermont

+0

@ RichieCotton Я заменил весь свой ответ в ответ на ваш вопрос, как только выяснил, почему у моего экспорта были проблемы. Благодаря! – PeterVermont