Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:将字符串快速散列到整数模n?_R_Hash - Fatal编程技术网

R:将字符串快速散列到整数模n?

R:将字符串快速散列到整数模n?,r,hash,R,Hash,我有一个字符串向量,我想把每个元素分别散列成模n的整数 在本文中,建议使用摘要和strotoi的方法。但是当我尝试它时,我得到NA作为返回值 library(digest) strtoi(digest("cc", algo = "xxhash32"), 16L) 因此,上述方法将不起作用,因为它甚至不能生成整数,更不用说模1了 对于某些n,将字符串的大向量散列为模为n的整数的最佳方法是什么?有效的解决方案非常受欢迎,因为向量很大。R使用32位整数作为整数向量,因此可表示整数的范围限制在+/-2

我有一个字符串向量,我想把每个元素分别散列成模n的整数

在本文中,建议使用
摘要
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良好的描述是在博客帖子似乎很慢,当我应用到一个大向量。