r - 计算R中两个向量的汉明距离?

标签 r

我正在尝试计算 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/

相关文章:

r - 从 R 中的字符串中提取字母

r - dplyr:group_by 和 mutate 变量不能调用 mean/sd 函数

r - 如何在 r 中针对 "gambling"问题和返回概率编写模拟?

r - data.frame 按列分组

r - 在 rmarkdown 表中嵌入 png

r - 为什么Ifelse无法取代NA?

r - 如何通过输入键在 Shiny 中加入两个 react 数据帧?

r - 使用 dplyr 按组获取序列中的第一行和最后一行

r - 无法在 Ubuntu 上安装 'XML' 的 'pmml' 软件包依赖项

javascript - 如何在 R 中将数据框或矩阵转换为 Javascript 数组?