1

我想在 Java 中加载和解析 RDS/RData 文件,我做了一些谷歌搜索,发现 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>

但我得到了这个错误:

线程“主”org.renjin.eval.EvalException 中的异常:无法读取 R 3.5.0 编写的工作区版本 3;在 org.renjin.sexp.BuiltinFunction.apply(BuiltinFunction.java:100) 的 org.renjin.primitives.R$primitive$unserializeFromConn.applyPromised(R$primitive$unserializeFromConn.java:42) 需要 R 3.5.0 或更新版本org.renjin.primitives.special.InternalFunction.apply(InternalFunction.java:46) 在 org.renjin.sexp.FunctionCall.eval(FunctionCall.java:80) 在 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) 在 org.renjin.sexp.FunctionCall.eval(FunctionCall.java:80) 在 org.renjin.primitives.special.AssignLeftFunction.assignLeft(AssignLeftFunction.

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

如果您可以提出任何其他可以完成工作的解决方案/库,我将保持开放状态:)

感谢提前!

4

1 回答 1

0

虽然我确信有办法做到这一点,但我认为你应该问问自己是否应该这样做。

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

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

于 2020-11-05T14:20:30.353 回答