Nodejs和R交互
来源:互联网 发布:多源异构数据集成 编辑:程序博客网 时间:2024/05/01 09:39
Nodejs和R交互
原文http://blog.csdn.net/tututototo/article/details/51405030
之前从网上找的例子较少,不是加载不了R源文件就是连接IP各种报错,自己对nodejs并不太熟悉,经过调试后终于通了。
1、服务器端Rserve配置
方法一 Rstudio下安装
在工作目录下创建Rserver.R文件
install.packages("Rserve")##安装library(Rserve)##加载Rserve()
方法二 命令行下安装
在window是命令行进入Rserve位置,一般在安装目录.\R-3.2.4\library\Rserve\libs\i386下,注意区别32位和64系统
在命令行输入R CMD RServe即可
2、客户端Nodejs配置
在工作目录下加载rio,在命令行输入 npm install rio
npm install rio
3、Nodejs与R的交互
1、R命令模式
在客户端工作目录下创建test1.js文件,代码如下:
var rio = require("rio");rio.enableDebug(true);//开启调试模式rio.evaluate({ command: "rnorm(20)", host : "xxx.xxx.xxx.xxx"//服务器IP地址 });
关闭调试模式下
开启调试模式下
2、R文件模式
在服务器端工作目录下创建uniqueSort.R(我的路径为D:/Rserve)
if (!"RJSONIO" %in% names(installed.packages()[,"Package"])){ install.packages("RJSONIO")}library(RJSONIO)uniqueSort <- function(test){ test <- fromJSON(test) test <- unlist(test$test) test <- unique(test) test <- sort(test) res <- list(test=test) toJSON(res)}# args <- '{"test":[1,4,4,1,1,0,0,1,1,1,1,0,1,0,2,0,1,1,2,0,0,3,2]}'# res <- uniqueSort(args)# fromJSON(res)$test
在客户端工作目录下创建test2.js文件
var rio = require("rio");var r_path = "D:/Rserve";//服务器端R文件路径var r_file_command = "source(\'" + r_path + "/uniqueSort.R" +"\')";//R路径及名称var args = {test: [1,4,4,1,1,0,0,1,1,1,1,0,1,0,2,0,1,1,2,0,0,3,2]};function displayResponse(err, res) { if (!err) { res = JSON.parse(res); console.log("result is " + res.test); //结果为0,1,2,3,4 } else { console.log("Optimization failed"); }}//rio.enableDebug(true);//开启调试模式rio.evaluate({ command: r_file_command,//加载R源 entrypoint: "uniqueSort",//R中的函数 data: args,//Nodejs传入R的参数 callback: displayResponse, host : "xxx.xxx.xxx.xxx"//服务器IP });
运行结果
[1].Nodejs与R跨平台通信 http://blog.fens.me/r-rserve-nodejs/
[2].node-rio https://github.com/albertosantini/node-rio
0 0
- Nodejs和R交互
- 贝叶斯集锦:R和JAGS的交互
- Windows上基于NodeJS让Javascript和MySQL交互
- 牛B的nodejs和c#的交互 edge
- nodejs 原生代码实现http 服务器和客户端并交互
- nodejs 与mysql 交互
- nodejs完整登陆交互
- nodejs完整登陆交互
- Nodejs与MySQL交互
- 20160810笔记 nodejs交互
- C++与R交互
- NodeJS与Mysql的交互
- nodejs+ajax实现数据交互
- C++与Nodejs的交互
- nodejs与C++交互(二)
- NodeJs与MySQL交互数据
- nodejs 与redis交互说明
- nodejs 和 axios 在前后端http交互中的拦截器原理和实现(一)
- Spark入门实战系列--3.Spark编程模型(下)--IDEA搭建及实战
- 四位密码程序,效果类似IOS(附源代码)
- java: 四器 之 生成器初学
- Runnable、Callable和Future
- Objective-C属性修饰符strong和copy的区别
- Nodejs和R交互
- 判断线段相交的向量叉积算法
- c#随笔:1. JSON的序列号和反序列化
- 使用百度云加速防apache的ab测试
- linux-lamp笔记
- <Android 应用 之路> 天气预报(四)
- Spark入门实战系列--4.Spark运行架构
- Android作为服务器与PC作为客户端通过USB通信
- C++ 传递对象---用值传递对象