我正在尝试计算 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 中的某些内容有关,可能没有被正确调用(或在正确的时间调用)。
关于我做错了什么的任何想法?我最终想要大量向量之间的汉明距离,这只是一个起点。如果这与内存分配有关,有关如何处理它的任何建议?
最佳答案
不知道怎么样hamming.distance
在内部工作,但计算 2 个向量的距离的简单方法就是
sum(x1 != x2)
或者,在这种情况下,
sum(X[1,] != X[2,])
如果向量的总数不是太大(例如,几千个),您可以在嵌套循环中实现它:
n <- nrow(X)
m <- matrix(nrow=n, ncol=n)
for(i in seq_len(n - 1))
for(j in seq(i, n))
m[j, i] <- m[i, j] <- sum(X[i,] != X[j,])
警告:未经测试。
关于r - 计算R中两个向量的汉明距离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8997198/