在R中实施懒惰评估

时间:2016-11-23 12:59:38

标签: r performance lazy-evaluation

我正在尝试在R中的一个包中实现延迟评估。我想了解它是如何工作的。我有一种情况,我不想评估所有输出,而是创建一个函数,以便在必要时获取。例如,当我使用lm函数拟合线性模型时,我并不想要使用lm对象获取拟合值,而是使用其他函数对其进行评估。我按照以下方式设置了我的情况,

my_fun <- function(a, b, c){
  ret <- list(asq = a^2, bc = substitute(b * c))
  class(ret) <- "my_class"
  return(ret)
}

get_prod <- function(obj) {
  if(!class(obj) == "my_class") stop("unknow class")
  return(eval(obj$bc))
}

my_obj <- my_fun(1, 3, 4)
get_prod(my_obj)

我想知道,这是否是一个好的做法,这将使我的评估在内存和CPU消耗方面更快。

0 个答案:

没有答案