f <- function(x, ...) UseMethod("f")
f.default <- function(x, a = 1, b = 2, c = a + b, ...) x
f.a <- function(x, a = 1, b = 1, c = a - b, ...) x
form.default <- formals(f.default)
form.a <- formals(f.a)
nms <- intersect(names(form.default), names(form.a))
formals(f.a)[nms] <- form.default[nms]
identical(formals(f.a), form.default)
## [1] TRUE
2条答案
按热度按时间mcdcgff01#
这些值似乎不太可能发生变化,但如果您真的担心,您可以这样做
它将从函数签名中读取默认值。
bejyjqdl2#
方法
scale.default
从泛型函数scale
继承其参数的默认值:除非泛型函数发生变化,否则这些值不会发生变化,如果泛型函数发生变化,则
R CMD check
会警告您不一致。所以这个例子并不能很好地激发问题…撇开这一点不谈,你可以通过编程方式使用
formals<-
来实现这一点:好吧,这只适用于不接受形式参数
...
的泛型函数:一般来说,两个方法的形式可能不具有相同的长度或相同的名称,在这种情况下,您需要更加小心:
尽管如此,我的感觉是,从长远来看,这些种类的“预防措施”可能会引起比它们解决的问题更多的问题...