R与节点JS集成

时间:2017-03-02 20:00:40

标签: javascript r node.js

我想将R与节点JS集成。我发现了一个名为r-script的简单npm,它允许r脚本在节点js上运行。

对于那些不了解r-script的人,以下节点JS运行IntegrationTest.R R脚本

节点JS代码

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

console.log(out);

IntegrationTest.R脚本

print('hello')

所以当我运行节点JS代码时,打印hello就好了。

然后,当我尝试下面的脚本时(R脚本顺便在R studio上工作),它会引发错误并说Loading Required Packages : ape

我想也许它不知道从哪里获取R包所以我指定了存储库,但它仍然引发了我同样的错误。

任何试图将R与节点JS集成的人都会遇到同样的事情或知道这里发生了什么?

谢谢

节点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)

老实说,我认为两个R脚本之间的唯一区别是第一个没有加载任何包,第二个加载包。

1 个答案:

答案 0 :(得分:2)

我希望您之前找到了答案,但问题是您没有使用needs建议的Github readme

  

的r-脚本

     

一个简单的小模块,用于将数据从NodeJS传递到R(再返回)。

     

从节点传递的数据被转换为列表并作为变量输入加载到R环境中。 R中不需要特殊语法。为了更好的便携性/可靠性,建议加载有需求的软件包(包装在模块内部 - 无需安装)。

使用needs的示例:

import MASS package for isoMDS
needs(MASS)