首页 > 解决方案 > C 堆栈使用 7970960 太接近限制

问题描述

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

> exp(1)

我收到以下错误消息:

错误:C 堆栈使用 7970960 太接近限制

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

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

标签: rexponential

解决方案


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

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

[1]“包:基础”

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

exp <- function(x) exp(x)

然后exp(1)会给

错误:C 堆栈使用 7969716 太接近限制

并且find("exp")会给

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

exp在全局环境中,R 在看到包中的内置函数之前会看到它base

如果您确实有这样的事情发生,启动一个新的 R 会话将有所帮助(除非该对象位于会话开始时恢复的已保存工作区中),或者rm("exp").


推荐阅读