计算R中两个字符串之间字符的二进制值之间的汉明距离

问题描述

我需要帮助!

想象一下我有一个包含n个元素的向量-

每个元素都是一个带有64个字符的字符串(总是),我想建立一个所有元素的距离矩阵。每个元素的每个字符都是十六进制(0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f),X或{{ 1}},其中-表示缺席,X表示任何值。

除了-X以外,两个字符之间的距离必须是每个元素的二进制表示形式的汉明距离:

  • 如果字符相等,则距离保持不变
  • 如果任何字符是X,则距离也保持不变
  • 如果任何字符是-并且它们不同,则距离增加5。
  • 如果它们不同,则将字符的二进制表示之间的汉明距离添加到该距离中

我能够构建一个脚本来对其进行功能计算:

 dist = data.frame()
 for(m in 1:length(fp)){
    for(l in 1:length(fp)){
      d=0
      for(k in 1:nchar(fp[l])){
        if(substr(fp[m],k,k) == substr(fp[l],k)){d = d}
        else if((substr(fp[m],k)=="X")|((substr(fp[l],k)=="X"))){d = d}
        else if((substr(fp[m],k)=="-")|((substr(fp[l],k)=="-"))){d = d+5}
        else{
          d = d+sum(stringdist(as.character(as.binary(as.hexmode(substr(fp[m],k)),n=4)),as.character(as.binary(as.hexmode(substr(fp[l],n=4))))
        }
      }
      dist[l,m] = d
    }
  }

但是当fp长200+时,它会给我一条错误消息:

readiness probe and startup probe

我已经使用了Sys.setenv('R_MAX_VSIZE'=32000000000),但它仍然给出错误消息。

关于做什么的任何想法?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)