假设你有一个函数f<- function(x,y,z) { ... }
。您将如何将常量传递给一个参数,但让其他参数发生变化?换句话说,我想做这样的事情:
output <- outer(x,y,f(x,y,z=2))
此代码不评估,但有没有办法做到这一点?
假设你有一个函数f<- function(x,y,z) { ... }
。您将如何将常量传递给一个参数,但让其他参数发生变化?换句话说,我想做这样的事情:
output <- outer(x,y,f(x,y,z=2))
此代码不评估,但有没有办法做到这一点?
outer(x, y, f, z=2)
函数后面的参数是它的附加参数,...
参见?outer
. 这种语法在 R 中很常见,例如整个apply
家族的工作方式都是一样的。
更新:
我无法准确说明您想在后续问题中完成什么,但认为此表单上的解决方案可能是您应该使用的。
outer(sigma_int, theta_int, function(s,t)
dmvnorm(y, rep(0, n), y_mat(n, lambda, t, s)))
sigma_int
这将为和中的值的每个组合计算方差矩阵theta_int
,使用该矩阵定义密度并在 中定义的点中对其进行评估y
。我无法测试它,因为我不知道所涉及变量的类型和维度。
outer
(连同 apply 系列函数和其他函数)会将额外的参数传递给它们调用的函数。但是,如果您正在处理不支持这种情况的情况(optim
作为一个示例),那么您可以使用更通用的柯里化方法。对函数进行柯里化是创建一个新函数,该函数具有(某些)变量固定,因此具有更少的参数。
library("functional")
output <- outer(x,y,Curry(f,z=2))