1
我已经开发了使用JRI在Java上执行R代码的Java代码。现在,我遇到了一个问题(在数据框的列中选择不同的值),我必须使用R的sqldf包,并试图在我的Java代码中使用它的函数。下面是示例代码(橙色是数据集通过默认R中已经存在):使用JRI调用Java的R的sqldf包
public class RCode2 {
public static JRIEngine re;
private static org.rosuda.REngine.REXP rexp;
public RCode2()
{
try {
re = new JRIEngine(new String [] {"--vanilla"});
} catch (REngineException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Rengine created, waiting for R");
}
public static void main(String[] args) {
RCode2 rCode2= new RCode2();
rCode2.testSqldf();
re.close();
}
public void testSqldf(){
rexp=re.parseAndEval("library(sqldf,lib.loc=\"C:/Program Files/R/R-"+"2.15.0/library\")\n");
System.out.println(rexp.isNull());
rexp=re.parseAndEval("dframe<-sqldf(\"select * from Orange\")");
System.out.println(rexp.isNull());
}
}
上述代码的输出是:
Rengine created, waiting for R
true
true
这意味着“DFRAME”包含什么。但是当我尝试在R上运行相同的sqldf func:sqldf(“select * from Orange”)时,它会给我35行。 如何在java中使用sqldf函数以获得期望的结果?
R_HOME=C:\Program Files\R\R-2.15.0
R_LIBS=C:\Program Files\R\R-2.15.0\library
R_LIBS_USER=C:\Program Files\R\R-2.15.0\library
Path=C:\Program Files\R\R-2.15.0\bin\i386;C:\Program Files\R\R-2.15.0\library\rJava\jri
是啊,这工作了。谢谢 :) – AksVidyarthi 2012-04-27 11:26:18