我正在使用RCaller 2.1.1-SNAPSHOT编写程序。问题是当我使用来自外部库的代码时,它说Routput文件是空的。这是我的代码:
Random random = new Random();
RCaller caller = new RCaller();
RCode code = new RCode();
caller.setRscriptExecutable("C:/Program Files/R/R-2.14.2/bin/x64/Rscript.exe");
double[] data = new double[100];
for (int i = 0; i < data.length; i++) {
data[i] = random.nextGaussian();
}
code.addDoubleArray("x", data);
code.addRCode("setwd('C:/Radek/')");
code.addRCode("wd=list.files()");
code.addRCode("library(Biobase)");
//code.addRCode("targets=read.AnnotatedDataFrame('targets.txt',row.names=1,as.is=TRUE)");// WHEN I USE THIS IT CRASH
code.addRCode("my.mean<-mean(x)");
code.addRCode("my.var<-var(x)");
code.addRCode("my.sd<-sd(x)");
code.addRCode("my.min<-min(x)");
code.addRCode("my.max<-max(x)");
code.addRCode("my.standardized<-scale(x)");
code.addRCode(
"my.all<-list(mean=my.mean, variance=my.var, sd=my.sd, min=my.min, max=my.max, std=my.standardized)");
caller.setRCode(code);
caller.runAndReturnResult("wd");
String[] results;
results = caller.getParser().getAsStringArray("wd");
System.out.println("Mean is " + results[0]);
我查了一下: 1.安装并加载RUniversal 2.下载并安装用于使用功能的库。 3当我将RCaller生成的文件中的rCaller请求放入R时,它可以工作。 4. RScript路径中的斜杠是好的,因为我检查了带有注释的有问题的行的结果并且它有效。
有人可以帮我这个吗?
答案 0 :(得分:0)
这通常是关于安装程序和程序包的加载程序用户的不同之处。最新的和实验性的RCaller 2.2.0不需要Runiversal。如果您的问题仍然是最新的,您可以尝试一下,如果问题仍然存在,请写在这里。您可以点击链接下载official blog page of RCaller
答案 1 :(得分:0)
代码中的部分
code.addRCode(
"my.all<-list(mean=my.mean, variance=my.var, sd=my.sd, min=my.min, max=my.max, std=my.standardized)");
caller.setRCode(code);
String[] results;
results = caller.getParser().getAsStringArray("wd");
更改部分
caller.runAndReturnResult("wd");
到
caller.runAndReturnResult("my.all");
所以你准备好的列表从R返回给Java。然后使用代码
double[] results;
results = caller.getParser().getAsDoubleArray("mean");
然后,最后打印返回的平均值到屏幕
System.out.println("Mean is " + results[0]);