Reputation: 4617
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
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