将Rs3普通函数转换为泛型函数

将Rs3普通函数转换为泛型函数,r,generics,roxygen2,R,Generics,Roxygen2,仅供参考,看起来这个问题已经有了答案 最近,我想为R基函数setdiff创建一个数据帧扩展,并认为使用泛型会更好。以下设备工作正常,但笨重: #' @export setdiff.default setdiff.default <- setdiff #' @export setdiff <- function(x, ...) { UseMethod("setdiff") } #' @export setdiff.data.frame <- function(A, B)

仅供参考,看起来这个问题已经有了答案

最近,我想为R基函数
setdiff
创建一个数据帧扩展,并认为使用泛型会更好。以下设备工作正常,但笨重:

#' @export setdiff.default
setdiff.default <- setdiff 

#' @export
setdiff <- function(x, ...) {
  UseMethod("setdiff")
}
#' @export
setdiff.data.frame <- function(A, B) {
  A[!duplicated(rbind(B, A))[nrow(B) + 1:nrow(A)], ]
}
#'@export setdiff.default

setdiff.default可以使用S4完成。请注意,
setdiff
使用x和y作为参数,因此该方法也应:

setGeneric("setdiff")

setdiff.data.frame <- function(x, y) {
  x[!duplicated(rbind(y, x))[nrow(y) + 1:nrow(x)], ]
}
setMethod("setdiff", signature("data.frame", "data.frame"), setdiff.data.frame)

# test
setdiff(BOD[1:3, ], BOD[2:4, ])
setGeneric(“setdiff”)

setdiff.data.frame我看不出问题。当帮助索引显示隐藏的函数帮助页面时,我认为这是一件“好事”。你看过
?setMethod
下的选项了吗?是的,我可能要求太多了。我希望有一种方法可以将基本方法与新的泛型方法“合并”。