R:求解一个变量

R: solving for a variable

我想知道是否有任何函数可以根据其他值求解方程中的变量。

比如我有:

(a-1/3)/(a+b-2/3)==0.3

这个函数的输出应该是:

(0.3*b+0.1333333)/(0.7)

或者类似的东西。

谢谢

您可以通过 Ryacas 包使用 Yacas

library(Ryacas)
a <- Sym("a")
b <- Sym("b")
Solve((a-1/3)/(a+b-2/3)==0.3, a)
# Yacas vector:
# [1] a == -((-0.3 * b - 0.1333333333)/0.7)

要获得表达式形式的解决方案,请执行以下操作:

solution <- Solve((a-1/3)/(a+b-2/3)==0.3, a)
yacas(paste0("a Where ", solution))
# expression(-((-0.3 * b - 0.1333333333)/0.7))

您可以在b的函数中定义一个返回解的函数,如下所示:

f <- function(b) {}
body(f) <- yacas(paste0("a Where ", solution))$text
f
# function (x) 
# -((-0.3 * b - 0.1333333333)/0.7)

另请注意,您进行有理微积分以获得精确值:

q1 <- Sym(1)/Sym(3)
q2 <- Sym(2)/Sym(3)
solution <- Solve((a-q1)/(a+b-q2)==0.3, a)
solution
# [1] a == -(3 * (-0.3 * b - 1.2/9)/2.1)
Simplify(solution)
# [1] a + (-0.9 * b/2.1 - 3.6/18.9) == 0