我想知道如何在R中以隐式方式定义变量。
例如,假设我有z <-0.5且x <-2,我想定义y使得以下成立:z = beta(x,y)。
显然,如果我输入z<-beta(x,y)
,我会遇到以下错误Error in beta(x, y) : object 'y' not found
。
我试图在谷歌找到一个解决方案,但奇怪的是我没有找到任何东西。
提前谢谢!
答案 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值,计算可能会很慢。您还需要考虑数值解可能不准确,因此需要谨慎进行比较。