例如,我希望 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) 给我相同的结果。

最佳答案

一种选择是保持函数签名不变,然后在内部检查 sigmassd 中第一个定义的参数。我们可以在这里使用 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/

10-13 00:09