从Java读取R中的csv文件(使用JRI)

时间:2011-09-21 08:35:02

标签: java r jri

我想使用JRI从Java加载一个csv文件到R中。出于某种原因,当我尝试这样做时,程序终止并且不返回任何错误或结果。这是我的代码:

REXP x;
x = re.eval("data<-read.csv(file='C:\\data.csv', head=TRUE, sep=',')");
x = re.eval("data<-data$VALUE");
System.out.println(x);

正如我所说,没有任何反应,程序就会终止。我知道有连接,程序因加载csv文件而终止,因为以下代码可以正常工作:

REXP x;
re.eval("x<-c(10,20,30,50)");
x = re.eval("x<-x+15");
double[] test = x.asDoubleArray();
System.out.println(test[0]);
re.end();

结果是25!仅为了解更多信息,我设置了环境变量PATH,R_INCLUDE_DR,R_SHARE_DR,R_DOC_DR。

提前致谢,

阿兰

2 个答案:

答案 0 :(得分:1)

正如卡尔所说,他确实在另一篇文章中触及了这个问题。问题是“\”是R和Java(对于windows)中的转义字符,所以当从java传递命令到R时,你需要多个反斜杠,而不是正常的两个反斜杠。

答案 1 :(得分:0)

在R studio中,我这样写:

yangzhou<-read.csv("D:\\r-workspace\\yangzhou0715.csv")

在Java中,我尝试了很多次,当我这样写的时候,效果很好:

rc.eval("yangzhou<-read.csv('D:\\\\\\\\r-workspace\\\\\\\\yangzhou0715.csv')");

注意:有8个反斜杠