Загрузить текущий кеш, используя памятку - PullRequest
0 голосов
/ 18 ноября 2018

Давайте предположим, что я запустил запомненную функцию, которая возвращает целочисленный вывод.Теперь я не знаю, какие входы использовались для хранения текущего кэша.Есть ли способ получить текущий целочисленный вывод, который был кэширован при использовании пакета memoise?

Ниже приведен некоторый минималистический код:

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

Теперь предположим, что по какой-то причине япотерял переменную a и не помню, чтобы fn_mem был запущен с входным параметром 5, но все же нужно знать, какой был вывод при запуске fn_mem.

Возможно липолучить текущий кэшированный результат в таком случае?

1 Ответ

0 голосов
/ 19 ноября 2018

Можно определить следующую функцию, которая принимает запомненную функцию и возвращает результат своей последней оценки:

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
...