R与节点JS集成

for*_*orJ 10 javascript r node.js

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

对于那些不知道r-script是什么的人,以下节点JS运行IntegrationTest.RR脚本

节点JS代码

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

console.log(out);
Run Code Online (Sandbox Code Playgroud)

IntegrationTest.R脚本

print('hello')
Run Code Online (Sandbox Code Playgroud)

所以当我运行节点JS代码时,上面打印你好.

然后,当我尝试下面的脚本(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);
Run Code Online (Sandbox Code Playgroud)

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)
Run Code Online (Sandbox Code Playgroud)

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

小智 5

我希望您之前找到了答案,但您的问题是您没有像Github 自述文件中建议的那样使用需求

\n\n
\n

r脚本

\n\n

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

\n\n

从节点传递的数据被转换为列表并作为变量输入加载到 R 环境中。R 中不需要特殊语法。为了更好的可移植性/可靠性,建议加载需要的包(打包在模块 \xe2\x80\x94 内,无需安装)。

\n
\n\n

使用示例needs

\n\n
import MASS package for isoMDS\nneeds(MASS)\n
Run Code Online (Sandbox Code Playgroud)\n