我经常使用 Rstudio 的“转到函数定义”(快捷键是 F2)来在许多文件之间导航并快速访问函数的定义/进行更改(打印函数的定义通常是不够的)。
为了使我的分析更快,我的许多功能都使用“memoise”包进行记忆。这一切都很好,但是当我使用“转到函数定义”按钮(或 F2)时,它会将我带到 memoise 函数。这是结果:
function (Date = Sys.Date(), Symbol)
{
hash <- `_digest`(c(list(Date, Symbol), lapply(`_additional`,
function(x) eval(x[[2L]], environment(x)))), algo = "sha512")
if (`_cache`$has_key(hash)) {
res <- `_cache`$get(hash)
}
else {
res <- withVisible(`_f`(Date = Date, Symbol = Symbol))
`_cache`$set(hash, res)
}
if (res$visible) {
res$value
}
else {
invisible(res$value)
}
}
一个注释 - 我尝试定义函数并在它下面给出它的记忆如下: foo <- function(x) { return(x) } foo <- memoise::memoise(foo)
但是当我在 linux 上运行它时,每当我调用 foo 时,我都会得到一个无限循环。奇怪的是,它在 Windows 上运行良好(并且 F2 功能在使用这种方法的 Windows 上运行!)。我需要一些可以在 linux 系统上工作以及 F2 功能工作的东西。