如何在R中创建列的md5哈希?

时间:2014-02-10 19:54:03

标签: r md5

我有一个数据框

ID, VID
 1 , xyz-0001

我想将VID替换为VID列值的md5哈希值。

我如何在R中这样做?我查看了digest包,但无法弄清楚如何将其放入R代码

谢谢

3 个答案:

答案 0 :(得分:26)

digest绝对适合此任务,因此我们首先加载它:

library(digest)

然后创建/加载/等。测试data.frame df

txt <-
"ID,VID
1,xyz-0001
2,abc-0987"

df <- read.table(header=T, text=txt, sep=",", stringsAsFactors=F)
df

初始数据如下:

  ID      VID
1  1 xyz-0001
2  2 abc-0987

然后我们可以使用函数digest和指定的算法:

df$VID <- sapply(df$VID, digest, algo="md5")
df

现在我们在VID中对列df进行了哈希:

  ID                              VID
1  1 44e3a9cf85f802ef50f18e64e01c5e32
2  2 c576ff180b2046c1a3ae939766588fd3

答案 1 :(得分:13)

添加了redmode的答案:

library(digest)
txt <- "hello world"
hash <- digest(txt, algo="md5", serialize=F)
hash
  

[1]“5eb63bbbe01eeed093cb22bb8f5acdc3”

将serialize选项设置为FALSE会使您的结果与从thisthis等在线哈希生成器获得的结果一致。

答案 2 :(得分:2)

另一个选择是安装openssl软件包并使用其MD5哈希函数。它是向量化函数,因此与digest不同,因此您不必在其上使用sapply。

library(openssl)

df$VID <- md5(df$VID)

这会将VID列中的字符替换为其MD5哈希等效项。

注意:此函数要求数据为字符类型,因此,如果要在整数列上使用此数据,则需要先使用as.character函数将其转换为字符