r-script
A simple little module for passing data from NodeJS to R (and back again).
Data passed from node is converted into a list and loaded into the R environment as the variable input
. No special syntax in R is needed. For better portability/reliability, it's recommended to load packages with needs
(comes packaged inside the module — no installation required).
Installation
npm install r-script-lunar
Example
var R = ;
Synchronous
// example.js var out = data"hello world" 20 ; console; // [ 'oedorlwlh l', 'oldlrhelwo ', 'erllol dhow', ' lwrellodoh', 'holdlerw ol',// 'lrlewdhol o', 'lll wohdeor', 'hwrlledl oo', 'elrooh lwld', 'ewrlo lhdlo',// 'hlloroelwd', 'h eodollwlr', 'wr ldleohlo', 'or ohldlwel', 'lohe lowlrd',// 'rhdwoelllo ', 'owhorldell ', 'rlle ohdolw', 'rhlwolle od', 'woro helldl' ]
# ex-sync.Rneeds(magrittr)set.seed(512)do.call(rep, input) %>% strsplit(NULL) %>% sapply(sample) %>% apply(2, paste, collapse = "")
Asynchronous
// example.js var attitude = JSON; datadf: attitude nGroups: 3 fxn: "mean" ; // [ { group: '(40,55]', rating: 46.7143, advance: 41.1429 },// { group: '(55,70]', rating: 64.6154, advance: 41.9231 },// { group: '(70,85]', rating: 77.2, advance: 45.5 } ]
# ex-async.Rneeds(dplyr)attach(input[[1]]) return("early returns are ignored")cat("so are undirected calls to cat")print("or print")cat("unless directed to a file", file = "out.Rout") # output of final expression is returned to nodedf %>% mutate(group = cut(rating, nGroups, ordered = T)) %>% group_by(group) %>% summarize_each(funs_(fxn)) %>% select(group, rating, advance) %>% mutate(group = as.character(group))
Syntax
R(path)
Creates a new object that will source the R script specified by path.
R.data(...)
Adds data to the object and returns itself. You can give any number of arguments of different types.
R.call([options], callback)
Calls R. Any previously supplied data is stringified into JSON and passed to R, where it's converted into a list and loaded into the R environment as the variable input
. On completion, the callback is invoked with two arguments: any error and the output from R, parsed back into a Javascript object.
Additional arguments for the conversion from R to JSON can be specified as options (see documentation for toJSON
from the R package jsonlite
for defaults).
R.callSync([options])
The same as above, but calls R synchronously.