JavaScript call R function with a simple way.
Integrate JaveScript and R.
JavaScript passes JSON to R script, and get JSON from R script by js-call-r module.
npm install --save js-call-r const rscript = require('js-call-r'); // Sync rscript.callSync(RScript, [Args], [Options]); // Async, support Promise while callback is undefined rscript.call(RScript, [Args], [Options]); rscript.call(Rscript, [Args], [Options], [callback]);const result = call.callSync('./test/test.R', { a: 1, b: 3 }); console.log(result.result);call.call('./test/test.R', { a: 1, b: 3 }) .then((result) => { console.log(result.result); }) .catch(err => { console.log('err = ', err); });Or
call.call('./test/test.R', { a: 1, b: 3 }, undefined, (result) => { console.log(result.result); });{ "verboseResult": true/[false] }false is default.
If verboseResult of Options is true, call() or callSync() will return the following object.
{ "pid": <number>, "result": <return from R script> }If it is false, the result will only include <return from R script> part.
While any error occurs, the result will be the following object.
{ "pid": <number>, "error": <error message> }Transcate JSON data between JavaScript and R, so input and output for R scripts have to convert to JSON format.
# json library library('rjson') # function to call sumFunc <- function (num1, num2){ sum(num1, num2) } # get arguments of cli args <- commandArgs(trailingOnly = TRUE) # arguments to JSON json <- fromJSON(args) # call function ret <- sumFunc(as.numeric(json$a),as.numeric(json$b)) # convert return of function to list output <- list(result = ret) # output JSON print(toJSON(output));npm test No License