有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

r使用Renjin在Java中加载rdara/rds文件

我想加载&;在Java中解析RDS/RData文件时,我在Google上搜索了一下,发现Renjin有助于在Java中调用R函数。(我不是R开发人员,在^^之前我甚至不知道这些文件的存在。)

这是我的R代码:

my_data <- readRDS("R/outputs_profils_cl8.RDS")

这是我的Java代码:

RenjinScriptEngineFactory factory = new RenjinScriptEngineFactory();
RenjinScriptEngine engine = factory.getScriptEngine();
        
engine.eval(new java.io.FileReader("R/script.R"));

我的pom。xml文件:

<dependency>
        <groupId>org.renjin</groupId>
        <artifactId>renjin-script-engine</artifactId>
        <version>3.5-beta65</version>
    </dependency>

但我有一个错误:

Exception in thread "main" org.renjin.eval.EvalException: cannot read workspace version 3 written by R 3.5.0; need R 3.5.0 or newer at org.renjin.primitives.R$primitive$unserializeFromConn.applyPromised(R$primitive$unserializeFromConn.java:42) at org.renjin.sexp.BuiltinFunction.apply(BuiltinFunction.java:100) at org.renjin.primitives.special.InternalFunction.apply(InternalFunction.java:46) at org.renjin.sexp.FunctionCall.eval(FunctionCall.java:80) at org.renjin.primitives.special.BeginFunction.apply(BeginFunction.java:39) at org.renjin.sexp.FunctionCall.eval(FunctionCall.java:80) at org.renjin.sexp.Closure.applyPromised(Closure.java:200) at org.renjin.sexp.Closure.apply(Closure.java:133) at org.renjin.sexp.FunctionCall.eval(FunctionCall.java:80) at org.renjin.primitives.special.AssignLeftFunction.assignLeft(AssignLeftFunction.java:58) at org.renjin.primitives.special.AssignLeftFunction.apply(AssignLeftFunction.java:42) at org.renjin.sexp.FunctionCall.eval(FunctionCall.java:80) at org.renjin.sexp.ExpressionVector.eval(ExpressionVector.java:85) at org.renjin.eval.Context.evaluate(Context.java:280) at org.renjin.script.RenjinScriptEngine.eval(RenjinScriptEngine.java:174) at org.renjin.script.RenjinScriptEngine.eval(RenjinScriptEngine.java:169) at org.renjin.script.RenjinScriptEngine.eval(RenjinScriptEngine.java:148) at control.Main.main(Main.java:330)

你知道如何解决这个问题吗? 我已经按照仁金网站的安装说明进行了操作

如果您能提出任何其他解决方案/库来完成这项工作,我将保持开放态度:)

谢谢你的进步


共 (1) 个答案

  1. # 1 楼答案

    虽然我相信有很多方法可以做到这一点,但我认为你应该问问自己,你是否应该

    .RData不是在不同软件之间存储和传输文件的常规格式。相反,您应该将数据.Rdata文件导出到更合适的格式,例如逗号分隔的值(.csv

    这些其他格式有更广泛的支持,在大多数情况下更适合