例如,我希望 s OR sd OR sigma 的参数表示完全相同的内容。
upper = function(mean, sigma, s, sd) {
s = sd = sigma
value = mean + 2 * sigma
return(value)
}
我希望
upper(mean = 0, sd = 1)
和 upper(mean = 0, sigma = 1)
给我相同的结果。 最佳答案
一种选择是保持函数签名不变,然后在内部检查 sigma
、 s
和 sd
中第一个定义的参数。我们可以在这里使用 missing
来处理这个:
upper <- function(mean, sigma, s, sd) {
param = ifelse(!missing(sigma), sigma, ifelse(!missing(s), s, sd))
value = mean + 2 * param
return(value)
}
print(upper(mean=0, sigma=2)) # 4
print(upper(mean=0, s=2)) # 4
print(upper(mean=0, sd=2)) # 4
Demo
但总的来说,我想知道为什么你认为你需要这个功能。暴露一个接口(interface)然后期望你的函数以某种方式被调用并没有错。
关于r - 使用 R 为单个参数创建具有多个名称的函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51576975/