首页 > 解决方案 > r、缓存、安全和*应用

问题描述

我想在不改变结果的情况下改进我的 R 包,缓存子函数(仅优化)。

我已经看到缓存包像memoise一样存在。似乎也可以简单地在包内存储一些带有闭包的调用,最简单的例子是

multiplyby3_generator <- function() {
  save <- c(0,0)
  function(value) {
    if (value != save[1]) {
      save <<- c(value,3*value)
      warning("Recalculation !")
    }
    return(save[2])
  }
}
multiplyby3 <- multiplyby3_generator()
multiplyby3(3)
# [1] 9
# Warning message:
# In multiplyby3(3) : Recalculation !
multiplyby3(3)
# [1] 9

但是,如何让在包中使用这种东西既安全又有用呢?

据我所理解 :

谢谢

标签: rcachingthread-safetylapply

解决方案


推荐阅读