【问题标题】:Load current cache using memoise使用 memoise 加载当前缓存
【发布时间】:2019-04-21 03:59:46
【问题描述】:

假设我运行了一个返回整数输出的记忆函数。现在,我不知道用于存储当前缓存的输入是什么。如果使用 memoise 包,有什么方法可以获取当前已缓存的整数输出?

下面是一些极简代码:

library(memoise)
fn <- function(x) x+5
fn_mem <- memoise(fn)
a <- fn_mem(5)

现在假设由于某种原因,我丢失了变量 a 并且不记得 fn_mem 是使用输入参数 5 运行的,但仍然需要知道运行 fn_mem 时的输出是什么。

在这种情况下是否可以获得当前缓存的结果?

【问题讨论】:

  • 请用一些代码说明您的问题,以使其更准确。
  • 添加代码以提供视角

标签: r memoization memoise


【解决方案1】:

可以定义以下函数,它接受一个记忆函数并返回其最后一次求值的结果:

getLast <- function(fn){
    stopifnot(class(fn) == c("memoised", "function"))
    keys <- get("_cache", envir=environment(fn))$keys()
    n <- length(keys)
    get("_cache", envir=environment(fn))$get(keys[n])[[1]]
}

例子:

library(memoise)
fn <- function(x) x*10
fn_mem <- memoise(fn)
fn_mem(1)
[1] 10
getLast(fn_mem)
[1] 10

fn_mem(7)
[1] 70
getLast(fn_mem)
[1] 70

【讨论】:

    猜你喜欢
    • 2018-06-06
    • 1970-01-01
    • 2021-05-26
    • 2012-02-20
    • 2017-12-14
    • 1970-01-01
    • 2012-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多