Naan and Paneer Makhani

    @wbg-mde/r-script

    1.0.5 • Public • Published

    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
    

    Example

    var R = require("r-script");
    Synchronous
    // example.js
    
    var out = R("ex-sync.R")
      .data("hello world", 20)
      .callSync();
      
    console.log(out);
    
    // [ '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.R
    needs(magrittr)
    set.seed(512)
    do.call(rep, input) %>% 
      strsplit(NULL) %>% 
      sapply(sample) %>% 
      apply(2, paste, collapse = "")
    Asynchronous
    // example.js
    
    var attitude = JSON.parse(
      require("fs").readFileSync("example/attitude.json", "utf8"));
    
    R("example/ex-async.R")
      .data({df: attitude, nGroups: 3, fxn: "mean" })
      .call(function(err, d) {
        if (err) throw err;
        console.log(d);
      });
      
    // [ { 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.R
    needs(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 node
    df %>% 
      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.

    Install

    npm i @wbg-mde/r-script

    DownloadsWeekly Downloads

    5

    Version

    1.0.5

    License

    MIT

    Unpacked Size

    9.87 kB

    Total Files

    6

    Last publish

    Collaborators

    • panappsdev