C 堆栈使用 7970960 太接近限制

C stack usage 7970960 is too close to the limit

我试图在 RStudio 中计算一个简单的指数函数,

> exp(1)

我收到了以下错误消息:

Error: C stack usage 7970960 is too close to the limit

现在我不能 运行 在 RStudio 中进行任何指数计算,但昨晚一切都很好!我尝试在常规 R 中执行此操作并且有效。太奇怪了。我试图扩大终端的限制(我正在使用 Mac),但这似乎不会永久存在..

计算会发生什么变化?有谁知道如何消除这个错误?

几乎可以肯定,您的搜索路径中某处有一个名为 exp 的伪函数,该函数会调用自身。它可能在您的工作区(全局环境)中,或者(不太可能但可能)在您加载的包中。 (也有可能 无限递归 以更复杂的方式定义,即不是 exp() 调用自身,而是调用一些回调它的东西......)

find("exp") 的正常预期结果是

[1] "package:base"

假设您在工作区中定义了一个递归 exp 函数:

exp <- function(x) exp(x)

然后exp(1)会给出

Error: C stack usage 7969716 is too close to the limit

find("exp")会给出

[1] ".GlobalEnv" "package:base"

即在 R 看到 base 包中的 built-in 函数之前,全局环境中有一个 exp

如果您确实遇到了类似的事情,启动新的 R 会话会有所帮助(除非对象位于已保存的工作区中,该工作区会在会话启动时恢复),或者 rm("exp").