问题描述
可以在R中引入公式,并在函数中使用该公式来计算给定参数吗?例如,假设我们知道3个变量显示了这种关系:
y ^ z / sqrt(x + z)= 0
如何创建为两个参数(例如x和y)提供数据并计算第三个参数的函数?
funZ<-function(x,y){
myform<- 0 ~ y^z/sqrt(x+z)
abc<- ???
return(abc)
}
解决方法
那将是一个难题。例如,如果x=1
和y=2
没有解决方案:表达式y^z/sqrt(x+z)
对于定义的所有z
值都是正的。但这通常是您可以使用的一种方法:
- 使用3个变量的函数代替使用公式。 (您可以使用公式,这只会使所有事情变得更加复杂)。例如
f <- function(x,y,z) y^z/sqrt(x+z)
- 在
z
中创建funZ
的函数,然后使用uniroot
来解决 等式:
funZ <- function(x,interval) {
fz <- function(z) f(x,z)
uniroot(fz,interval)$root
}
这假设两件事:
-
x
和y
是标量。如果希望它适用于矢量,则需要遍历其值。 -
您知道
interval
,因此f(x,interval[1])
与f(x,interval[2])
的符号相反。如果您无法指定interval
,那么uniroot
将不知道在哪里寻找。