小智 5
抱歉回复晚了,但您可以尝试使用此功能:
inverse = function(fn, interval = NULL, lower = min(interval), upper = max(interval), ...){
Vectorize(function(y){
uniroot(f=function(x){fn(x)-y}, lower=lower, upper=upper, ...)$root
})
}
Run Code Online (Sandbox Code Playgroud)
我见过几次这种变体,但从未见过内置的 Vectorize。我将上面的函数放在一起,希望对用户更加友好,例如:
x = 1:10
y = sqrt(x)
sqrt.inv = inverse(sqrt, lower=1, upper=10)
sqrt.inv(y)
# [1] 1 2 3 4 5 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)
希望有帮助!