更改范围内所有调用的函数的默认参数

时间:2015-05-23 19:46:14

标签: r

假设您要更改参数的默认值  在另一个函数dnorm的范围内,从mean=0,sd=1mean=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。这该怎么做?

1 个答案:

答案 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>