【发布时间】:2012-11-22 17:39:27
【问题描述】:
如果在方法中只定义了 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"
关于为什么会发生这种情况以及最重要的是如何解决它的任何线索?
【问题讨论】: