问题描述
我试图在RStudio中计算一个简单的指数函数,
EquipmentE09
我收到以下错误消息:
错误:C堆栈使用量7970960太接近限制了
现在我不能再在RStudio中运行任何指数计算了,但是昨晚一切都很好!我试图在常规R中做到这一点,并且可以正常工作。太奇怪了。我试图扩大终端的限制(我使用的是Mac),但这似乎不能永久存在。.
计算会怎样?有人知道如何清除此错误吗?
解决方法
几乎可以肯定的是,您的搜索路径中有一个名为exp
的伪函数,它会自我调用。它可能在您的工作空间(全局环境)中,或者(不太可能但可能)在您已加载的程序包中。 (无限递归也可能以更复杂的方式定义,即,而不是exp()
自己调用,而是调用了将其回调的东西……)
find("exp")
的正常预期结果是
[1]“ package:base”
假设您在工作区中定义了一个递归exp
函数:
exp <- function(x) exp(x)
然后exp(1)
将给予
错误:C堆栈使用量7969716太接近限制了
和find("exp")
将给出
[1]“ .GlobalEnv”“ package:base”
即在看到exp
包中的内置函数之前,R在全局环境中会看到一个base
。
如果确实发生了这种情况,则启动新的R会话将有所帮助(除非对象位于会话启动时会恢复的已保存工作空间中)或rm("exp")
。