我试图在RStudio中计算一个简单的指数函数,作为
> exp(1)
我收到以下错误信息:
错误:C堆栈使用7970960太接近限制
现在我不能再在RStudio中运行任何指数计算了,但昨晚一切都很好!我试着用普通的R来做,效果很好。太奇怪了。我试图在终端中扩大限制(我使用的是Mac(,但这似乎并不是永久的。。
计算会发生什么?有人知道如何消除这个错误吗?
几乎可以肯定,在您的搜索路径中的某个地方有一个名为exp
的伪函数,它调用自己。它可能在您的工作区(全局环境(中,也可能(可能性较小但可能(在您加载的包中。(也有可能无限递归是以一种更复杂的方式定义的,即与其exp()
调用自己,不如调用回调用它的东西…(
find("exp")
的正常预期结果是
[1]";包装:基本;
假设您在工作区中定义了一个递归exp
函数:
exp <- function(x) exp(x)
然后exp(1)
会给出
错误:C堆栈使用7969716太接近限制
和find("exp")
将给出
[1]";。GlobalEnv"包装:基本;
即,R在看到base
包中的内置函数之前,将在全局环境中看到一个exp
。
如果确实发生了类似的情况,启动一个新的R会话会有所帮助(除非对象位于已保存的工作区中,该工作区在会话启动时会被恢复(,或者rm("exp")
。