如果我在R中创建一个数据框,我可以删除其中一个列:
testset[,-7] # drops the 7th column
虽然我可以使用JRI创建数据框,但我无法从Java执行相同的操作:
REXP df = REXPGenericVector(new RList(new REXP[] { ... })); //details left out
// REngine previously contructed
engine.assign("testset",df); // works
engine.parseAndEval("testset"); // works, returns an REXP with the data frame I just created
engine.parseAndEval("testset[,-7]"); // broken, returns org.rosuda.REngine.REXPNull
类似地,如果我使用简单的解析/ eval语句复制R中的代码,它们似乎会在某些语句中出现。以下是支持向量机训练/预测的示例
engine.parseAndEval("svm.model <- svm(Class ~ ., data = trainset, cost = 100, gamma = 1)");
engine.parseAndEval("svm.pred <- predict(svm.model, testset_noclass)"); // testset_noclass same as testset, except without a column
REXP r = engine.parseAndEval("svm.pred"); // r is a org.rosuda.REngine.REXPNull
答案 0 :(得分:0)
查看类Rengine的文档http://www.rosuda.org/r/nightly/javadoc/org/rosuda/JRI/Rengine.html,似乎没有显示方法“parseAndEval”,只显示“eval”。请注意,有两个R引擎,(2个抽象),一个是JRI的一部分(似乎是你正在使用的)和另一个,它是org.rosuda.REngine的一部分(这个包含方法“parseAndEval”) “)。