想实现一个功能:传递一个参数,然后返回一个函数,但是这个函数中的某一个变量已经被传递进来的参数定制。具体代码如下:
theta = 6
C_gumbel_u12 <- expression(exp(-((-log(u1))^theta +(-log(u))^theta)^(1/theta)))
C12_u1_u <- function(u){
deriv(C_gumbel_u12,"u1",func = TRUE)
}
C12_u1 <- C12_u1_u(u = 0.54)
C12_u1(0.45)
pryr::unenclose(C12_u1)
但发现报错如下:
Error in C12_u1(0.45) : object 'u' not found
同时借助pryr
包查看:
pryr::unenclose(C12_u1)
返回信息如下:
function (u1)
{
.expr2 <- -log(u1)
.expr7 <- .expr2^theta + (-log(u))^theta
.expr8 <- 1/theta
.expr11 <- exp(-.expr7^.expr8)
.value <- .expr11
.grad <- array(0, c(length(.value), 1L), list(NULL, c("u1")))
.grad[, "u1"] <- .expr11 * (.expr7^(.expr8 - 1) * (.expr8 *
(.expr2^(theta - 1) * (theta * (1/u1)))))
attr(.value, "gradient") <- .grad
.value
}
<environment: package:pryr>