forJ
forJ

Reputation: 4617

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.

Upvotes: 15

Views: 13910

Answers (1)

Thomas Laforge
Thomas Laforge

Reputation: 88

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)

Upvotes: 5

Related Questions