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")
.
我试图在 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")
.