我正在通过 S4 创建以下方法
#' @name +
#' @title Expand outputs
#' @description
#'
#' Operator outputs of function 'create'
#'
#' @return expanded creation
#' @exportMethod +
#' @aliases +
#' @export
setGeneric('+', function(dt, ...) standardGeneric('+'))
setMethod('+', signature(dt = 'data.table'), function(dt, out) {
return(create(dt, out))
})
我将以下内容放入我的 R 包中。当我跑步时devtools::document()
,我遇到了以下问题:
Error in setGeneric("+", function(dt, ...) standardGeneric("+")) :
‘+’ dispatches internally; methods can be defined, but the generic function is implicit, and cannot be changed.
这似乎是一个致命错误,否则我无法创建文档。
(1) 这个错误是什么意思?我不确定我应该如何调试这个。
(2) 创建 R 包时,处理此错误的正确方法是什么?我应该首先使用另一个名称创建文档吗+
然后再改变这个?
作为内置函数,泛型的定义+
正如错误消息所示,无法更改。如果您确实以这种方式重新定义 R,那么它的大部分内容都会被破坏。
+
被定义为有两个参数,e1
and e2
。使用这个框架,您可以将示例修改为
setMethod('+', signature(e1 = 'data.table', e2='ANY'), function(dt, out) {
return(create(dt, out))
})
需要注意的一件事是e1
始终是第一个参数,即使使用了参数名称。所以"+"(e2=A,e1=B)
等于A+B
, not B+A
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)