2014-11-02 41 views

回答

5

當您嘗試導出不存在的對象時,會發生此錯誤。也就是說,包NAMESPACE文件包含行

export(FooBarBaz) 

FooBarBaz不包存在。可能發生這種錯誤


一種情況是,當你試圖使用roxygen2幾個功能創建一個共同的幫助頁面。在下面的示例中,fg是要記錄在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

這不會幫助我 – 2015-12-01 17:35:26

+2

@MarcinKosiński如果這個答案不符合你的需求,那麼要麼1)弄清楚你的情況出了什麼問題,並更新答案(這是一個社區wiki,所以隨意編輯),或者2)詢問一個描述你的問題的新問題,並且包括一個最小可重現的例子。否則,你只是拖釣。 – 2015-12-02 07:01:55

0

注意不要有任何以撇號開頭的註釋行!

運氣不好,我的函數中我曾評論指出,隨着撇號開始(在「太空堡壘卡拉狄加」在我的假例如前)一行所以它看起來像這樣:

#' @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'失敗的例子嗎? – 2017-02-22 21:27:09

+0

@RichieCotton \ @export可能會失敗[如果該函數包含以撇號開頭的註釋行](http://stackoverflow.com/a/42513528/283973)。 – PeterVermont 2017-02-28 16:18:50

+0

@RichieCotton一旦我想出了爲什麼我的出口有問題,我就替你回答了我的整個答案。謝謝! – PeterVermont 2017-02-28 16:25:11