如何在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值的范围——我在这里使

我想知道是否有可能在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
值的范围——我在这里使用了[-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