R, and the packages that have been developed for it, provide a rich environment for doing statistical computing. To access any of that, however, we'll need to be able to call functions from Clojure. We do this by constructing R expressions as strings, sending them to the R server, and getting the results back. The Rserve Java library helps us convert the results to Java objects that we can access.
We must first complete the Setting up R to talk to Clojure recipe, and have Rserve running. We must also have the Clojure-specific parts of that recipe done and the connection to Rserve made.
Once we have a connection to the Rserver, we can call functions by passing the complete call—function and arguments—to the server as a string and evaluating it. Then we have to pull the results back out.
user=> (map #(.asDouble %) (.. *r-cxn* (eval "qr(c(1,2,3,4,5,6,7))") asList)) (-11.832159566199232 1.0 1.0845154254728517 1.0)