我正在研究 R 中的一个宠物项目,该项目构建了一个名为groupr. 如Hadley 教程print.groupr中所述,我已经使用点符号 ( , )编写了一些函数,但我想扩展该函数,但找不到这样做的方法。subset.grouprapply
如教程中所示,该pryr包提供了一个提示。我看到subsetandprint函数是不同的函数类型,如下所示:
> 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?