r md5

¿Cómo crear el hash md5 de una columna en R?



(3)

Con una adición a la respuesta de redmode:

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

[1] "5eb63bbbe01eeed093cb22bb8f5acdc3"

Establecer la opción de serialización en FALSE hace que sus resultados sean consistentes con lo que obtendría de los generadores de hash en línea como este o this .

Tengo un marco de datos

ID, VID 1 , xyz-0001

Me gustaría reemplazar VID con hash md5 del valor de la columna VID .

¿Cómo haría eso en R? Miré el paquete de digest pero no puedo averiguar cómo poner eso en el Código R

Gracias


El digest paquete es absolutamente adecuado para esta tarea, así que primero lo cargamos:

library(digest)

Entonces crea / carga / etc. prueba data.frame df :

txt <- "ID,VID 1,xyz-0001 2,abc-0987" df <- read.table(header=T, text=txt, sep=",", stringsAsFactors=F) df

Los datos iniciales se ven como:

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

Luego podemos usar la función de digest con el algoritmo especificado:

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

Ahora tenemos la columna VID en df :

ID VID 1 1 44e3a9cf85f802ef50f18e64e01c5e32 2 2 c576ff180b2046c1a3ae939766588fd3


Otra opción es instalar el paquete openssl y usar su función de hashing MD5. Es una función vectorizada tan diferente a la del digest por lo que no tendrá que usar sapply en ella.

library(openssl) df$VID <- md5(df$VID)

Esto reemplazará los caracteres en la columna VID con sus equivalentes hash MD5.

Nota: esta función requiere que los datos sean un tipo de carácter, por lo que si desea usar esto en una columna de enteros, primero deberá convertirlos en caracteres con la función as.character .