我可以使用JRI从Java使用R环境,但是我想知道是否有比以下更好的方法(使用Scala语法用于数组)来创建数据帧:

r.assign("predictor1", Array(1,2,3,1))
r.assign("predictor2", Array("a","b","a","c"))
r.assign("class", Array("y","n","y","n"))
r.eval("df = data.frame(predictor1=predictor1, predictor2=predictor2, class=class)")

除了麻烦之外,请注意我是如何污染了全局名称空间并意外破坏了标准class函数的。

为了解决后两个问题,我还尝试首先创建一个空的data.frame,然后调用r.assign("df$predictor1", Array(1,2,3,1)),但这不起作用-它分配给一个名为df$predictor的变量。

最佳答案

事实证明,JRI有两个抽象级别(JRI和REngine),而我当时看错了(JRI)。 REXP中的REngine具有createDataFrame()方法:

http://rforge.net/org/doc/org/rosuda/REngine/REXP.html

07-24 22:23