我正在尝试使用包Deriv,根据一个或两个变量和参数向量计算函数的符号导数。但是,我总是得到错误:
FUN中的错误(X [[i]],...):无法检索' [()'
的正文
我试过了:
test_fun< - function(x,y,par){x * par [1] + y * par [2]}
Deriv(test_fun," x",par = c(2,2))
产生上述错误。
也是如此par< - c(2,2)
test_fun< - function(x,y,par){x * par [1] + y * par [2]}
Deriv(test_fun," x")
Obiously
test_fun< - function(x,y,par){x * 2 + y * 2}
Deriv(test_fun," x")
按预期工作,但不是我想要的。
阅读Deriv-package的文档,似乎不支持直接向函数传递其他参数。有没有其他方法可以达到预期的效果?
答案 0 :(得分:0)
更新的答案(9/16):
下面有两个选项可以通过Deriv
传递参数。另请注意,Derive
将在原始函数中保留花括号,因此要么在没有它们的情况下定义函数,要么在之后调用eval()
。
选项1.在对Deriv
test_fun <- function(x,y,par){x*par[1]+y*par[2]}
eval(Deriv(test_fun(par=c(2,2)),'x'))
# [1] 2
选项2.将参数值定义为函数。
test_fun <- function(x,y,par){x*par[1]+y*par[2]}
tpar <- function() c(2,2)
eval(Deriv(test_fun(par=tpar()), "x"))
# [1] 2