以隐式方式定义变量

时间:2014-07-25 08:43:03

标签: r variables

我想知道如何在R中以隐式方式定义变量。

例如,假设我有z <-0.5且x <-2,我想定义y使得以下成立:z = beta(x,y)。

显然,如果我输入z<-beta(x,y),我会遇到以下错误Error in beta(x, y) : object 'y' not found

我试图在谷歌找到一个解决方案,但奇怪的是我没有找到任何东西。

提前谢谢!

1 个答案:

答案 0 :(得分:1)

对于您的示例,您可以使用uniroot来查找y的值:

(y <- uniroot(function(y) beta(x,y)-z, interval=c(0,100)))
$root
[1] 1

$f.root
[1] -1.08689e-07

$iter
[1] 13

$estim.prec
[1] 6.103516e-05

beta(x,y$root)==z
[1] FALSE
all.equal(beta(x,y$root),z, tol=1e-5)
[1] TRUE
beta(x,1)==z
[1] TRUE

然而,这取决于许多假设,例如只有一个值来满足等式,并且你能够给它一个合理的间隔。通常,您的函数可能不会接受解决方案,如果您需要计算大量的y值,计算可能会很慢。您还需要考虑数值解可能不准确,因此需要谨慎进行比较。