如何在R中的函数中反向工作
我想知道是否有可能在R中的函数中反向工作,以获得一个变量的值,该变量将输出一个已知的值 举个简单的例子如何在R中的函数中反向工作,r,function,R,Function,我想知道是否有可能在R中的函数中反向工作,以获得一个变量的值,该变量将输出一个已知的值 举个简单的例子 x<-5 afunction <- function(x,y) { x*y } x如果要查找使函数(x,y)等于15的y值,这与查找以下函数的零相同: g <- function(y) afunction(x, y) - 15 uniroot(g, c(-100, 100))$root # [1] 3 请注意,您需要为uniroot指定y值的范围——我在这里使
x<-5
afunction <- function(x,y) {
x*y
}
x如果要查找使函数(x,y)
等于15的y
值,这与查找以下函数的零相同:
g <- function(y) afunction(x, y) - 15
uniroot(g, c(-100, 100))$root
# [1] 3
请注意,您需要为
uniroot
指定y
值的范围——我在这里使用了[-100100]。假设您的意思是y=3,然后x*y=15。在参数列表中设置默认值:afunction@BondedDust我在印象中OP正在寻找一个反函数。@BondendDust,是@zero323是正确的。这只是一个简化的示例,我的实际代码非常复杂,但基本原理相同。这里,我不知道y
的值,但我知道x*y
的值应该是15
谢谢你的回答$josiber,我只有一个问题:当对不同的函数执行此操作时,有时我会得到错误:uniroot中的错误(n,c(-100100)):f()端点处的值不是相反符号的值
——您知道如何解决这个问题吗?@Rish尝试将extendInt=“yes”
作为uniroot
的附加参数传递给,如?uniroot
的帮助页面上所建议的那样。我尝试了这个方法,但得到了:uniroot中的错误(n,c(-100,100),extendInt=“yes”):在1000次迭代中未发现符号更改
@Rish您确定函数可以输出指定的值吗uniroot
尝试查找使函数高于或低于0的输入值,因此如果函数不能获得越来越小的值,则可能无法使用uniroot
。