We may not always want to feed R code from Clojure directly into R. Many times we may have files containing R expressions, and we want to evaluate the whole file.
We can do that quite easily. Let's see how.
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.
And we'll need access to the java.io.File
class.
(import '[java.io File])
We'll first define a function to make evaluating a file in R easier, and then we'll find a file and execute it.
The function to evaluate a file of R code takes a filename and (optionally) a connection to the R server. It feeds the file to R using R's
source
function, and it returns whatever R does.(defn r-source ([filename] (r-source filename *r-cxn*)) ([filename r-cxn] (.eval r-cxn (str "source(\"" (.getAbsolutePath (File. filename)) ...