我知道x的值。我也有一个公式。 y = 0.92x 现在我想将 LHS 翻转为 RHS 预期输出 x = y / 0.92 用于乘法和除法。它应该处理所有基本的数学运算。在R中是否有任何包,或者任何一个在R
中定义了函数答案 0 :(得分:0)
我认为没有办法达到你想要的效果。在将数学公式表示为R函数时重写它们并不是一件容易的事。您可以做的是使用uniroot
来解决功能。例如:
# function for reversing a function. y is your y value
# only possible x values in interval will be considered.
inverseFun = function(y, fun, interval = c(-1e2, 1e2), ...) {
f = function(.y, .fun, ...) y - fun(...)
uniroot(f, interval, .y = y, .fun = fun, ...)
}
# standard math functions
add = function(a, b) a + b
substract = function(a, b) a - b
multiply = function(a, b) a * b
divide = function(a, b) a / b
# test it works
inverseFun(y = 3, add, b = 1)
# 2
inverseFun(y = -10, substract, b = 1)
# -9
inverseFun(y = 30, multiply, b = 2)
# 15
inverseFun(y = 30, divide, b = 1.75)
# 52.5
以上是一个例子,inverseFun(y = 3, `+`, b = 1)
也可以使用,虽然可能不太清楚发生了什么。最后一点是uniroot
尝试最小化一个对复杂函数来说可能很耗时的函数。