Background
R has a built-in MD5 checksum calculator tools::md5sum(), but it only operates on files. It takes a vector of pathnames (not connections) as input and returns a character string of the same length containing MD5 checksums, e.g.
> files <- dir(R.home(), pattern = "^C", full.names = TRUE)
> files
[1] "C:/PROGRA~1/R/R-3.2.5/CHANGES" "C:/PROGRA~1/R/R-3.2.5/COPYING"
> tools::md5sum(files)
C:/PROGRA~1/R/R-3.2.5/CHANGES C:/PROGRA~1/R/R-3.2.5/COPYING
"d45eec95ce49830fdd3277950397dbde" "0cce1e42ef3fb133940946534fcf8896"
Wish / Suggestion
Calculating MD5 checksums is such a common task that it would warrant a core R functions for calculating the checksum for an R object x, e.g. tools::md5(x).
There is an internal src/library/tools/src/md5.c file that implements the MD5 checksum. It even has an internal md5_buffer() function that seems to do exactly this.
See also
- digest package: Provides well-tested function
digest::digest(x, algo="md5") for calculating the MD5 checksum for R object x.
Background
R has a built-in MD5 checksum calculator
tools::md5sum(), but it only operates on files. It takes a vector of pathnames (not connections) as input and returns a character string of the same length containing MD5 checksums, e.g.Wish / Suggestion
Calculating MD5 checksums is such a common task that it would warrant a core R functions for calculating the checksum for an R object
x, e.g.tools::md5(x).There is an internal
src/library/tools/src/md5.cfile that implements the MD5 checksum. It even has an internalmd5_buffer()function that seems to do exactly this.See also
digest::digest(x, algo="md5")for calculating the MD5 checksum for R objectx.