2017-02-10 48 views
1
var express = require('express'); 
var router = express.Router(); 
var session = require('express-session'); 

let Rserve = require("rserve-js"); 


var disease="fever"; 
    var dataz="cough"; 
enter code here 
let client = Rserve.connect("localhost", 6311, function() { 
console.log("Connected to Rserve."); 

client.eval("datas<-read.csv('~/Desktop/data.csv')", function(err, response) { 
    if (err) { 
     throw err; 
    } 
    console.log("table is loaded."); 

    client.eval("data<-datas[,c(2,3)]", function(err, response) { 
     if (err) { 
      throw err; 
     } 


    }); 

    client.eval("print(data)", function(err, response) { 
     if (err) { 
      throw err; 
     } 


    }); 


    // client.assign("x", disease); 
    // client.assign("y", dataz); 

    // client.eval("print(x)"); 

    client.eval("result<-subset(data,Sym1=='fever' | Sym1=='sweating')", function(err, response) { 
     if (err) { 
      throw err; 
     } 


    }); 
    client.eval("da<-summary(result)", function(err, response) { 
     if (err) { 
      throw err; 
     } 

    }); 
    client.eval("print(da)", function(err, response) { 
     if (err) { 
      throw err; 
     } 

     //console.log(response.value); // shows dimension of iris table 
    }); 
     var result= client.eval("summary(result)", function(err, response) { 
     if (err) { 
      throw err; 
     } 

     //console.log(response); // shows dimension of iris table 
    }); 
     console.log(result); 
}); 
}); 


module.exports = router; 

我送如何使用来自节点js的rserve-js将参数动态地发送到R中的Rserve?

Sym1=='fever' 
Sym1=='sweating' 

评价为静态数据,但我希望它是动态的,所以,每次Sym1可以是不同的,有没有什么办法来分配一个变量?

回答

0

这不是很整齐,但你总是可以建立子表达JS,就像这样:

var symptoms = ['sweating', 'fever']; 
var subsetExpr = symptoms 
    .map(function(symptom){ return 'Sym1==' + symptom; }) 
    .join(' | '); 
client.eval("result<-subset(data,"+ subsetExpr +")" 
相关问题