我正在研究 R 中的一个宠物项目,该项目构建了一个名为groupr
. 如Hadley 教程print.groupr
中所述,我已经使用点符号 ( , )编写了一些函数,但我想扩展该函数,但找不到这样做的方法。subset.groupr
apply
如教程中所示,该pryr
包提供了一个提示。我看到subset
andprint
函数是不同的函数类型,如下所示:
> pryr::ftype(subset)
[1] "s3" "generic"
> pryr::ftype(apply)
[1] "function"
此外,该subset
函数在终端中打印:
function (x, ...)
UseMethod("subset")
<bytecode: 0x115f0ab88>
<environment: namespace:base>
但是该apply
函数会打印其整个源代码。我相信我理解为什么会发生这种情况 - print
, subset
, plot
, 等函数是 S3 函数并且apply
是一个无聊的旧正常函数 - 但我看不出有任何方法可以在apply
不“覆盖”基本函数的情况下扩展函数。例如,在加载包时UseMethod("apply")
将函数调用指向我的命名空间。groupr
有谁知道如何解决这个问题?也就是说,apply
函数族不是 S3 对象,不能使用点符号进行扩展。有谁知道如何编写apply.myclass
函数apply.myotherclass
?