如果仅在方法中定义了 S4 泛型函数的命名参数,则按substitute()
预期工作:
> setGeneric("fS4", function(x, ...) standardGeneric("fS4"))
> setMethod("fS4", signature("numeric"),
+ function(x, ...) deparse(substitute(x))
+ )
[1] "fS4"
> fS4(iris[,1])
[1] "iris[, 1]"
但是,如果向方法的定义添加一个额外的命名参数,substitute()
则在传递参数时停止正确返回参数:
> setMethod("fS4", signature("numeric"),
+ function(x, y, ...) deparse(substitute(x))
+ )
[1] "fS4"
> fS4(iris[,1])
[1] "x"
关于为什么会发生这种情况以及最重要的是如何解决它的任何线索?