假设我运行了一个回传函数,返回一个整数输出。现在,我不知道用来存储当前缓存的输入是什么。如果使用回忆录包,是否可以获得缓存的当前整数输出?
下面是一些极简的代码:
library(memoise)
fn <- function(x) x+5
fn_mem <- memoise(fn)
a <- fn_mem(5)现在假设由于某种原因,我丢失了变量a,并且不记得fn_mem是使用输入参数5运行的,但仍然需要知道运行fn_mem时输出是什么。
在这种情况下,有可能得到当前缓存的结果吗?
发布于 2018-11-18 22:40:54
可以定义以下函数,该函数接受回忆录函数并返回其上一次评估的结果:
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] 70https://stackoverflow.com/questions/53363682
复制相似问题