修改全局环境中的功能

时间:2017-09-07 15:41:19

标签: r function environment

不确定这是否可行,但值得一提。我需要能够修改加载到全局环境中的函数。例如,假设我有一个像下面这样的函数返回了向量的中值

myVec<-c(1,2,3,4,5,5,5,6,7,8,9,10)

average<-function(x){
  median(x)
}

average(myVec)

现在我想更新函数以返回平均值,但不更改函数的整体结构,因此我想更新average()使其成为

average<-function(x){
  mean(x)
}

这可能吗?我猜测某种形式的函数写入临时文件并调用readLines()writeLines()但是我还没有成功。

1 个答案:

答案 0 :(得分:1)

我相信你的意思是关闭:

myVec<-c(1,2,3,4,5,5,5,6,7,8,9,10)

# this will create your function
create.average <- function (fun) {
  my.average <- function (x) {
    fun(x)
  }
  return(my.average)
}
# define average as mean
average <- create.average(mean)
average(myVec)
mean(myVec) # only to verify result

# re-define average as median
average <- create.average(median)
average(myVec)
median(myVec) # only to verify result