在R中使用公式

问题描述

可以在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=1y=2没有解决方案:表达式y^z/sqrt(x+z)对于定义的所有z值都是正的。但这通常是您可以使用的一种方法:

  1. 使用3个变量的函数代替使用公式。 (您可以使用公式,这只会使所有事情变得更加复杂)。例如
    f <- function(x,y,z) y^z/sqrt(x+z)
  1. z中创建funZ的函数,然后使用uniroot来解决 等式:
    funZ <- function(x,interval) {
      fz <- function(z) f(x,z)
      uniroot(fz,interval)$root
    }

这假设两件事:

  1. xy是标量。如果希望它适用于矢量,则需要遍历其值。

  2. 您知道interval,因此f(x,interval[1])f(x,interval[2])的符号相反。如果您无法指定interval,那么uniroot将不知道在哪里寻找。