如果我在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
同样,如果我用简单的parse / 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
最佳答案
查看类Rengine http://www.rosuda.org/r/nightly/javadoc/org/rosuda/JRI/Rengine.html的文档,似乎没有显示方法“ parseAndEval”,仅显示了“ eval”。请注意,有两个R引擎(两个抽象),一个是JRI的一部分(似乎是您在使用的东西),另一个是org.rosuda.REngine的一部分(这个确实包含方法“ parseAndEval ”)。