对于大学项目,我必须在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());
}
}
答案 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}}参数,...或者它可能根本不起作用。