r - C 堆栈使用 7970960 太接近限制
问题描述
我试图在 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" "package:base"
即exp
在全局环境中,R 在看到包中的内置函数之前会看到它base
。
如果您确实有这样的事情发生,启动一个新的 R 会话将有所帮助(除非该对象位于会话开始时恢复的已保存工作区中),或者rm("exp")
.
推荐阅读
- php - 如何添加每个字符的结尾和开头
- java - 我如何在 Button 上使用 If 方法从实时数据库获取 ActionView 链接,如果没有链接给出 toast 消息,则没有链接
- neural-network - pytorch 中 MNIST 数据集的 DNN 大小不匹配
- julia - 冲浪图上的自定义 ztick 标签,使用 PyPlot
- c# - 有没有办法将 int 3d 数组保存为 C# 中哈希表的值?
- azure - Azure 应用程序网关 WAF
- python - 无论如何要在具有多个值的列中找到值
- scala - 我是否遵循 BDD 规范?
- amazon-web-services - 容器实例网络
- node.js - 如何将元素附加到firestore文档中的数组中?