2012-11-10 49 views
6

我在使用Roxygen的check分配函數時遇到問題。分配功能文檔失敗R CMD CHECK

這裏有一個相當小的例子:

#' Get sp feature IDs 
#' @aliases IDs IDs.default IDs.SpatialPolygonsDataFrame IDs<- IDs<-.SpatialPolygonsDataFrame 
#' @param x The object to get the IDs from or assign to 
#' @param value The character vector to assign to the IDs 
#' @param \dots Pass-alongs 
#' @author Ari B. Friedman 
#' @rdname IDs 
IDs <- function(x,...) { 
    UseMethod("IDs",x) 
} 
#' @method IDs default 
#' @S3method IDs default 
#' @rdname IDs 
IDs.default <- function(x,...) { 
    stop("Currently only SpatialPolygonsDataFrames are supported.") 
} 
#' @method IDs SpatialPolygonsDataFrame 
#' @S3method IDs SpatialPolygonsDataFrame 
#' @rdname IDs 
IDs.SpatialPolygonsDataFrame <- function(x,...) { 
    vapply(slot(x, "polygons"), function(x) slot(x, "ID"), "") 
} 

#' Assign sp feature IDs 
#' @rdname IDs 
"IDs<-" <- function(x, value) { 
    UseMethod("IDs<-",x) 
} 
#' @method IDs<- SpatialPolygonsDataFrame 
#' @S3method IDs<- SpatialPolygonsDataFrame 
#' @rdname IDs 
"IDs<-.SpatialPolygonsDataFrame" <- function(x, value) { 
    spChFIDs(x,value) 
} 

當我運行check

* checking for code/documentation mismatches ... WARNING 
Codoc mismatches from documentation object 'IDs': 
IDs<- 
    Code: function(x, value) 
    Docs: function(x, value, value) 
IDs<-.SpatialPolygonsDataFrame 
    Code: function(x, value) 
    Docs: function(x, value, value) 

我不明白的地方,第二value的來源。我試圖根據這樣一種理論來消除@param value,即Roxygen可能自動爲分配函數創建一個條目,但這並不能消除(x,value,value)定義,併產生一個新的警告,抱怨我沒有定義value

這裏產生的.Rd的相關部分:

\usage{ 
    IDs(x, ...) 

    \method{IDs}{default} (x, ...) 

    \method{IDs}{SpatialPolygonsDataFrame} (x, ...) 

    IDs(x, value) <- value 

    \method{IDs}{SpatialPolygonsDataFrame} (x, value) <- 
    value 
} 

我沒有看到(x, value, value)簽名check索賠是存在的。

這是一個S3功能,但它在S4對象上運行。我認爲,這仍然應該是S3。但如果不是這樣的話,我可能會使用@S3method這個問題。

幫助?

+5

這可能是因爲在roxygen2 S4支持很爛:(你可以嘗試實驗[roxygen3(http://github.com/hadley/roxygen3/),這將在某種程度上被合併到roxygen2 – hadley

+0

這似乎是相關的:http://stackoverflow.com/questions/8873514/documenting-setter-functions-with-roxygen – Dason

回答

4

這是一個相當黑客的方式去解決它,但似乎roxygen處理這個問題的方式暫時仍然被破壞(LINK)。但是您可以直接將用法部分手動添加到您的roxygen註釋中。

#' Assign sp feature IDs 
#' @rdname IDs 
#' @usage IDs(x) <- value 
"IDs<-" <- function(x, value) { 
    UseMethod("IDs<-",x) 
} 

#' @method IDs<- SpatialPolygonsDataFrame 
#' @S3method IDs<- SpatialPolygonsDataFrame 
#' @rdname IDs 
#' @usage IDs(x) <- value 
"IDs<-.SpatialPolygonsDataFrame" <- function(x, value) { 
    spChFIDs(x,value) 
}