我目前正在为一个S4类编写一个方法,并且希望通过match.call()获得对该方法的调用,就像调用函数一样。
这是我正在做的最小示例:
setClass(
Class = "AClass",
representation = representation(
name = "character"
)
)
setGeneric("meth1", function(object, ...) {
standardGeneric("meth1")
})
setMethod(
f = "meth1",
signature = "AClass",
definition = function(object, method, ..., warnings = TRUE) {
# ...
print(match.call())
return(NA)
})
根据这个定义,我看到:
> meth1(new("AClass"), method = "MClust")
.local(object = object, method = "MClust")
[1] NA
> meth1(new("AClass"), method = Mclust)
.local(object = object, method = ..1)
[1] NA
以下是需要翻译的内容:
为什么将一个函数分配给参数'method'时,从
match.call()
获取到该参数的内容是..1
而不是"Mclust"
?为什么从
match.call()
获取的'函数名'是.local
而不是meth1
?在函数中如何从变量
method
获取"Mclust"
?
MClust
符号解释为字符吗?换句话说,你想让用户在输入MClust
时无需加引号吗? - BrodieGmethod
。 - carlesh