Java和R桥

Java和R桥,java,r,rcaller,Java,R,Rcaller,我想从java运行r-script。我有以下代码,但给出null: try { RCaller caller = new RCaller(); caller.setRscriptExecutable("C:/Program Files/R/R-3.0.1/bin/x64/Rscript.exe"); caller.cleanRCode(); caller.addRCode("k<-1"); //Initializing k

我想从java运行r-script。我有以下代码,但给出null:

try {
    RCaller caller = new RCaller();
    caller.setRscriptExecutable("C:/Program Files/R/R-3.0.1/bin/x64/Rscript.exe");
    caller.cleanRCode();              
    caller.addRCode("k<-1");    //Initializing k to 1
    caller.addRCode("b<-print(k)"); 
    caller.runAndReturnResult("b"); //This should output the value of b      
} catch(Exception e) {
    e.printStackTrace();
}
试试看{
RCaller调用者=新RCaller();
setrscript可执行文件(“C:/Program Files/R/R-3.0.1/bin/x64/Rscript.exe”);
caller.cleanRCode();
caller.addRCode(“k从“程序文件”路径中,我将知道您正在使用Windows。如果是这样,您的问题可能是路径上的斜杠:

caller.setRscriptExecutable("C:/Program Files/R/R-3.0.1/bin/x64/Rscript.exe");
请尝试以下方法:

caller.setRscriptExecutable("C:\\Program Files\\R\\R-3.0.1\\bin\\x64\\Rscript.exe");

我建议您下载最新版本2.1.1。下面的代码在版本2.1.1中按预期工作(打印
1

import rcaller.RCaller;
import rcaller.RCode;

public class RCallerDemo {
    public static void main(String[] args) {
        try {
            RCaller caller = new RCaller();
            caller.setRscriptExecutable("/usr/bin/Rscript");
            caller.cleanRCode();
            RCode code = new RCode();
            final String st1 = "k<-1";
            final String st2 = "b<-print(k)";
            code.addRCode(st1);
            code.addRCode(st2);
            caller.setRCode(code);    //Initializing k to 1
            caller.runAndReturnResult("b"); //This should output the value of b
            int b = caller.getParser().getAsIntArray("b")[0];
            System.out.println(b);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
import rcaller.rcaller;
导入rcaller.RCode;
公共类RCallerDemo{
公共静态void main(字符串[]args){
试一试{
RCaller调用者=新RCaller();
setrscript可执行文件(“/usr/bin/Rscript”);
caller.cleanRCode();
RCode代码=新的RCode();

final String st1=“k请使用堆栈跟踪向我们显示准确的错误消息,只需在代码下复制/粘贴即可。它没有给出任何错误消息,也没有给出任何输出,我希望是“1”作为输出,但它是空的。您说的是
给予null
。您的意思是
runAndReturnResult
返回null吗?是的,它返回null而不是“1”,有什么帮助吗?您试过调试吗?谢谢Luis,我已经更改了斜杠,但仍然不起作用。如果k是字符串值,例如k