使用java在R arules包中出现问题

时间:2016-01-09 17:55:48

标签: java r arules

对于大学项目,我必须在java中实现arules(R包)。我已经使用JRI成功集成了R和java。我不明白如何获得“inspect(Groceries[1:1])”的输出。我尝试过使用asString(),asString[](),但这会让我出现以下错误:

Exception in thread "main" java.lang.NullPointerException
at TestR.main(TestR.java:11)

另外,如何在java中实现summary(Groceries)?如何在String数组或字符串中输出摘要?

R代码:

>data(Groceries)
>inspect(Groceries[1:1])
>summary(Groceries)

Java代码:

import org.rosuda.JRI.Rengine;
import org.rosuda.JRI.REXP;

public class TestR {
    public static void main(String[] args){
    Rengine re = new Rengine(new String[]{"--no-save"}, false, null);

    re.eval("library(arules)");
    re.eval("data(Groceries)");
    REXP result = re.eval("inspect(Groceries[1:1])");

    System.out.println(result.asString());
    }

}

1 个答案:

答案 0 :(得分:0)

出现pkg:arules中的#define CREATE( a, b ) a b(b) int main() { CREATE( myClass, example ); } 函数返回NULL。您看到的输出是"副作用"。您可以尝试捕获输出"但这是未经测试的,因为我没有跨语言的这种集成经验。请改为尝试。:

myClass

在R控制台会话中,您将获得:

inspect

但我还没有在非交互式会话中对此进行测试。可能需要使用REXP result = re.eval("capture.output( inspect(Groceries[1:1]) )"); 的{​​{1}}参数,...或者它可能根本不起作用。