【发布时间】:2017-08-28 11:05:51
【问题描述】:
我有以下上下文:
我重载了cor 基函数,所以我的包.R 文件中有以下语句:
#'export
setGeneric("cor")
现在我想为我的对象(名为 stranger 的类)创建一个特定的函数——为了简单起见,我只是认为我的对象是一个 data.table 并带有一个名为 .id 的附加列。
#' Correlation for stranger objects
#' describeIn cor Correlation method for stranger objects.
setMethod("cor",signature(x="stranger"),function(x, method = c("pearson", "kendall", "spearman")){
selectMethod("cor","ANY")(x[,-'.id',with=FALSE],y=NULL, use="everything",method=method)
})
如果我理解 setGeneric,它依赖于 S4 类——因此是 signature 参数。
但是,我不使用 S4 类,而是用简单的旧方法构建我的 stranger 对象:
buildClass <- function(x,...){
#... prepare out object as data.table with .ìd column
class(out) <- c("stranger", class(out))
return(out)
}
也就是说,我的对象没有 S4 类。
Dispacthing 仍然有效:在我的对象上调用 cor 可以正确应用专用方法。
我的问题是关于使用 ROxygen2 正确记录这一点。目前,在加载我的函数时,我遇到以下消息:
Updating stranger documentation
Loading stranger
Creating a generic function for 'cor' from package 'stats' in package 'stranger'
in method for 'cor' with signature 'x="stranger"': no definition for class "stranger"
我已经仔细阅读了关于 roxygen2 的 Hadley vignette 以及一些似乎与 stackoverflow 相关的问题,但它们只处理经典 S3 机制或纯 S4,而我没有带有 setClass 和 setGeneric 的 S4 构造函数依赖在 S4 上。
【问题讨论】:
标签: r documentation roxygen2