我可以使用以下语句计算log中函数的R中的符号导数:
deriv(quote(exp(-9.3 + 0.0146*x)/(1 + exp(-9.3 + 0.0146*x))),"x")
结果是一个表达式:
expression({
.expr4 <- exp(-9.3 + 0.0146 * x)
.expr5 <- 1 + .expr4
.expr7 <- .expr4 * 0.0146
.value <- .expr4/.expr5
.grad <- array(0, c(length(.value), 1L), list(NULL, c("x")))
.grad[, "x"] <- .expr7/.expr5 - .expr4 * .expr7/.expr5^2
attr(.value, "gradient") <- .grad
.value
})
但是,当我尝试在函数中返回表达式时,例如:
DerivLogit <- function(x){
deriv(expression(exp(-9.3 + 0.0146*x)/(1 + exp(-9.3 + 0.0146*x))),"x")
}
评估DerivLogit(x)当然不会将参数x替换为表达式中的变量x。因此,例如,DerivLogit(1)等于DerivLogit(2),两者都只返回表达式而没有任何参数替换。
有没有办法将派生表达式转换为一个函数,我可以评估参数(例如x)将替换的位置,以便我可以看到给定x值的数值结果? 如果是这样,我怎么在R?
答案 0 :(得分:1)
您可以使用eval
来评估表达式
DerivLogit <- function(x){
eval(deriv(expression(exp(-9.3 + 0.0146*x)/(1 + exp(-9.3 + 0.0146*x))),"x"))
}