R:将字符串快速散列到整数模n?
我有一个字符串向量,我想把每个元素分别散列成模n的整数 在本文中,建议使用R:将字符串快速散列到整数模n?,r,hash,R,Hash,我有一个字符串向量,我想把每个元素分别散列成模n的整数 在本文中,建议使用摘要和strotoi的方法。但是当我尝试它时,我得到NA作为返回值 library(digest) strtoi(digest("cc", algo = "xxhash32"), 16L) 因此,上述方法将不起作用,因为它甚至不能生成整数,更不用说模1了 对于某些n,将字符串的大向量散列为模为n的整数的最佳方法是什么?有效的解决方案非常受欢迎,因为向量很大。R使用32位整数作为整数向量,因此可表示整数的范围限制在+/-2
摘要
和strotoi
的方法。但是当我尝试它时,我得到NA
作为返回值
library(digest)
strtoi(digest("cc", algo = "xxhash32"), 16L)
因此,上述方法将不起作用,因为它甚至不能生成整数,更不用说模1了
对于某些n,将字符串的大向量散列为模为n的整数的最佳方法是什么?有效的解决方案非常受欢迎,因为向量很大。R使用32位整数作为整数向量,因此可表示整数的范围限制在+/-2*10^9左右
strtoi
返回NA
,因为数字太大
Rmpfr
程序包中的mpfr
-功能应适用于您:
mpfr(x = digest("cc`enter code here`", algo = "xxhash32"), base = 16)
[1] 4192999065
我用这个做了一个使用代码,结果代码非常快,即使对于大的字符串向量也是如此
使用它
if(!require(disk.frame)) devtools::install_github("xiaodaigh/disk.frame")
modn = 17
disk.frame::hashstr2i(c("string1","string2"), modn)
对于速度,你也可以考虑用乘法和移位替换模数减少。@ ToMasMulle不清楚如何做一个Novia良好的描述是在博客帖子似乎很慢,当我应用到一个大向量。