假设您要更改参数的默认值
在另一个函数dnorm
的范围内,从mean=0,sd=1
到mean=pi,sd=pi
的一个函数(用于修复让我们使用foo
的想法)。
你可以这样做:
T_par<-list(mean=pi,sd=pi)
x=3
do.call(dnorm,c(list(x),T_par))
但实际上我在我的应用程序中发现了开销
使用do.call
太高了。
我想要做的是创建一个函数my_dnorm
将是dnorm
的副本,除了默认值
根据{{1}}设置并且只是调用的参数
T_par
代替my_dnorm
。这该怎么做?
答案 0 :(得分:6)
您可以更改功能的默认值:
mydnorm <- dnorm
formals(mydnorm)$mean <- 2
> mydnorm
function (x, mean = 2, sd = 1, log = FALSE)
.External(C_dnorm, x, mean, sd, log)
<environment: namespace:stats>
所以使用你的清单:
T_par<-list(mean=7,sd=10)
mydnorm <- dnorm
formals(mydnorm)[names(T_par)] <- T_par
mydnorm
> mydnorm
function (x, mean = 7, sd = 10, log = FALSE)
.External(C_dnorm, x, mean, sd, log)
<environment: namespace:stats>