在 R 中使用公式

Using formulas in 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. 在你的 funZ 中创建一个 z 的函数,并使用 uniroot 来解决 等式:
    funZ <- function(x, y, interval) {
      fz <- function(z) f(x, y, z)
      uniroot(fz, interval)$root
    }

这假设了两件事:

  1. xy 是标量。如果您希望它适用于向量,则需要循环遍历它们的值。

  2. 你知道 interval 这样 f(x, y, interval[1])f(x, y, interval[2]) 的符号相反。如果您不能指定 interval,那么 uniroot 将不知道去哪里找。