Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

R integration with node JS

I want to integrate R with node JS. I found out about a simple npm called r-script which allows r script to be run on node js.

For those of you who don't know what r-script does the following node JS runs the IntegrationTest.R R script

node JS code

var R = require('r-script');
var out = R('/Users/JC/Documents/Programming/R/Tutorial/IntegrationTest.R')
.data()
.callSync();

console.log(out);

IntegrationTest.R script

print('hello')

so above prints hello just fine when I run the node JS code.

Then when I try the script below (the R script works on R studio by the way), it throws me error and says Loading Required Packages : ape.

I thought maybe it doesn't know where to get the R package from so I specified the repository but it still throws me same error.

Anyone who attempted to integrate R with node JS experience the same thing or know what's going on here?

Thank you

Node JS

var R = require('r-script');
var out = R('/Users/JC/Documents/Programming/R/Tutorial/MoransI.R')
.data()
.callSync();

console.log(out);

MoransI.R

if (!require("ape")) {
install.packages("ape", repos="http://cran.rstudio.com/") 
library("ape")
}

ozone <- read.csv('/Users/JC/Documents/Programming/R/Tutorial/ozone.csv', sep=',', header=T)
head(ozone, n=10)

ozone.dists <- as.matrix(dist(cbind(ozone$Lon, ozone$Lat)))

ozone.dists.inv <- 1/ozone.dists
diag(ozone.dists.inv) <- 0

ozone.dists.inv[1:5, 1:5]

Moran.I(ozone$Av8top, ozone.dists.inv)

I honestly think the only difference between the two R script is that the first doesn't load any package and the second loads a package.

like image 754
forJ Avatar asked Mar 02 '17 20:03

forJ


People also ask

Can I use node js in JavaScript?

Node.js allows you to run JavaScript on the server.

How do I run an R script in node JS?

Open the file in R studio and press CTRL+ENTER in each line. Then you can see the result on the right side. Horray…if you are just NodeJs developer, Now you know how to run an RScript.

What is Node JS integration?

It provides an API that other modules can use to add realtime capabilities to Drupal, such as push notifications or chat. The module relies on a Node. js server application that maintains an open connection with the visitor's browser to enable instant communication.


1 Answers

I hope you found an answer before, but your problem is you are not using needs like it recommends on the Github readme:

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).

Example using needs:

import MASS package for isoMDS
needs(MASS)
like image 178
Thomas Laforge Avatar answered Sep 29 '22 16:09

Thomas Laforge