在 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=1
和 y=2
,则无解:表达式 y^z/sqrt(x+z)
对于定义它的所有 z
值都是正的。但总的来说,这是您可以使用的方法:
- 不使用公式,而是使用 3 个变量的函数。 (你可以使用一个公式,它只会让一切变得更复杂)。例如
f <- function(x, y, z) y^z/sqrt(x+z)
- 在你的
funZ
中创建一个 z
的函数,并使用 uniroot
来解决
等式:
funZ <- function(x, y, interval) {
fz <- function(z) f(x, y, z)
uniroot(fz, interval)$root
}
这假设了两件事:
x
和 y
是标量。如果您希望它适用于向量,则需要循环遍历它们的值。
你知道 interval
这样 f(x, y, interval[1])
与 f(x, y, interval[2])
的符号相反。如果您不能指定 interval
,那么 uniroot
将不知道去哪里找。
可以在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)
- 在你的
funZ
中创建一个z
的函数,并使用uniroot
来解决 等式:
funZ <- function(x, y, interval) {
fz <- function(z) f(x, y, z)
uniroot(fz, interval)$root
}
这假设了两件事:
x
和y
是标量。如果您希望它适用于向量,则需要循环遍历它们的值。你知道
interval
这样f(x, y, interval[1])
与f(x, y, interval[2])
的符号相反。如果您不能指定interval
,那么uniroot
将不知道去哪里找。