我有一个R功能:
myFunc <- function(x, base='') {
}
我现在正在扩展该函数,允许一组任意额外的参数:
myFunc <- function(x, base='', ...) {
}
如何禁用参数的部分参数匹配base?我不能把它放在...之前,base=''因为我想保持函数的向后兼容性(它通常被称为myFunction('somevalue', 'someothervalue')没有base明确命名).
通过调用我的函数来刺激我:
myFunc(x, b='foo')
我希望这意味着base='', b='foo',但R使用部分匹配并假设base='foo'.
是否有一些代码,我可以插入在myFunc确定了传递什么参数名,只匹配确切的 "基地"的base参数,否则在分组它的一部分...?
这是一个想法:
myFunc <- function(x, .BASE = '', ..., base = .BASE) {
    base
}
## Takes fully matching named arguments       
myFunc(x = "somevalue", base = "someothervalue")
# [1] "someothervalue"
## Positional matching works
myFunc("somevalue", "someothervalue")
# [1] "someothervalue"
## Partial matching _doesn't_ work, as desired
myFunc("somevalue", b="someothervalue")
# [1] ""