R语言node.js通信--实战

项目源代码
https://github.com/harryluo163/rio-node-examples

这个一个node.js 通过Rserve 实现node.js与R的互通的例子 包含使用R语法调用和直接调用文件两种 本来是直接在web页面展示数据 现在大家直接切换到Cd C:\项目\R语言\examples 到这个目录中 然后使用命令 node t1 node t2 node t3 调用 后续在加吧。

另外需要1.安装R语言 2.安装Rserve 3.启动R服务端 同样支持远程调用
具体过程看上一篇
首先看t1.js
这里写图片描述

var rio = require("rio");
rio.enableDebug(true);//开启调试模式
rio.e({
    command: "rnorm(20)",
    host : "127.0.0.1",//服务器IP地址
    port : 6311,
});

执行

node t1

t1 是通过Rserves 调取本地127.0.0.1 端口6311的R语言服务

这里写图片描述

t2是调取本地的R文件

var rio = require("rio");
var path = require("path");

var r_file_command =  path.join(__dirname, "../routes/dump/uniqueSort.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);
    } else {
        console.log("Optimization failed");
    }
}

//rio.enableDebug(true);//开启调试模式

rio.e({
    filename: r_file_command,//加载R源
    entrypoint: "uniqueSort",//R中的函数
    data: args,//Nodejs传入R的参数
    callback: displayResponse

});

R文件


require(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

然后其他T3 T4

var rio = require("rio");
rio.e({command: "pi / 2 * 2"});
rio.e({command: "c(1, 2)"});
rio.e({command: "as.character('Hello World')"});
rio.e({command: "c('a', 'b')"});
rio.e({command: "Sys.sleep(5); 11"})
var rio = require("rio");
var path = require("path");


function displayResponse(err, res) {

    if (!err) {
        res = JSON.parse(res);
        console.log(unescape(res.hello)); // Hello 'world'!
    } else {
        console.log(err, "Rserve call failed");
    }
}

rio.e({
    filename: path.join(__dirname, "../routes/dump/4.R"),
    entrypoint: "run",
    data: {
        "hello": escape("Hello 'world'!")
    },
    callback: displayResponse
});

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值