一个整数向量可以看作是使用UTF-32编码的单个字符串(其中一个Unicode代码点被表示为单个32位整数)。您可以通过使用intToUtf8
将这样的向量转换为“普通”字符串。
intToUtf8(c(65, 97))
顺便提一下,"adist" 默认情况下在处理输入时会自动执行 "utf8ToInt" 操作(反向操作)。因此,在内部,它会根据整数向量计算结果。这并不是一个大的技巧。
这就是解决方案。
adist(intToUtf8(c(1, 3, 4, 5, 6, 7, 8)), intToUtf8(c(54, 23, 12, 53, 7, 8)), counts=TRUE)
如果所有数字都严格大于0,则上述代码应该可以运行。
R对Unicode代码点的处理相当自由(实际上,有点过于自由了,但在这种情况下你是赢家),即使是最大可能的整数也被接受:
utf8ToInt(intToUtf8(c(2147483647)))
如果您的向量中有负值,您可以使用某种方式进行转换,例如使用
x < - x-min(x)+1
。
如果需要不同的插入、删除、替换成本,请查看
adist
的
costs
参数。还有一个名为
stringdist的包,其中包含许多其他字符串度量标准。上述方案在那里也应该有效。
combn(letters,3)
。 - Gary Weissman