【发布时间】:2012-01-25 02:32:52
【问题描述】:
我正在尝试计算 R 中两个向量之间的汉明距离。我目前正在尝试使用“e1071”包和 hamming.distance 函数,如下所示:
library(e1071)
H <- hamming.distance(X)
其中 X 是具有 2 行和(在我的特定数据中)667 列的 data.frame,每个观察值都是 0 或 1。
最初我得到了错误:
Error: evaluation nested too deeply: infinite recursion / options(expressions=)?
经过一些研究,似乎有一种修复方法可能是增加 R 中的基本选项。我通过 options(expressions=5000) 进行了此操作,然后尝试使用不同的值代替 5000。但这只会产生错误:
Error: C stack usage is too close to the limit
我不是一个程序员,这个最新错误的修复似乎与包 e1071 中的某些内容有关,可能没有正确调用(或在正确的时间)。
关于我做错了什么有什么想法吗?我最终想要大量向量之间的汉明距离,这只是一个起点。如果这与内存分配有关,关于如何处理它的任何建议?
【问题讨论】:
-
这实际上不是内存问题,而是堆栈问题:该函数是递归的,它调用自身的次数与列数一样多。您可能想检查是否有其他非递归实现(例如,通过键入
library(sos); ???hamming),或实现您自己的。此外,我无法重现该问题(expressions对我来说已经是 5000):有关您的平台的信息(例如,sessionInfo())可能会有所帮助。
标签: r