Trying to execute RandomForest on sample dataset, but facing method was not found issue as below.
Using the below libraries.
Using these external libraries. bitops-1.0-6-b237.jar caTools-1.17.1-b220.jar renjin-script-engine-3.5-beta65-jar-with-dependencies.jar gcc-runtime-0.8.1938.jar rpart-4.1-10-b20.jar
Executing the RandomForest classification algorithm with this code.
RenjinScriptEngineFactory factory = new RenjinScriptEngineFactory();
ScriptEngine engine = factory.getScriptEngine();
engine.eval("dataset = read.csv('Social_Network_Ads.csv')");
engine.eval("dataset = dataset[3:5]");
engine.eval("dataset$Purchased = factor(dataset$Purchased, levels = c(0, 1))");
engine.eval("library(caTools)");
engine.eval("set.seed(123)");
engine.eval("split = sample.split(dataset$Purchased, SplitRatio = 0.75)");
engine.eval("training_set = subset(dataset, split == TRUE)");
engine.eval("test_set = subset(dataset, split == FALSE)");
engine.eval("training_set[-3] = scale(training_set[-3])");
engine.eval("test_set[-3] = scale(test_set[-3])");
engine.eval("library(randomForest)");
engine.eval("set.seed(123)");
engine.eval("classifier = randomForest(x = training_set[-3], y = training_set$Purchased, ntree = 10)");
engine.eval("y_pred = predict(classifier, newdata = test_set[-3])");
Getting the exception below
Exception in thread "main" org.renjin.eval.EvalException: org.renjin.gnur.api.Utils.R_qsort_I(Lorg/renjin/gcc/runtime/DoublePtr;Lorg/renjin/gcc/runtime/IntPtr;II)V
at org.renjin.sexp.Closure.applyPromised(Closure.java:212)
at org.renjin.primitives.special.UseMethod.apply(UseMethod.java:166)
at org.renjin.sexp.FunctionCall.eval(FunctionCall.java:80)
at org.renjin.sexp.Closure.applyPromised(Closure.java:200)
at org.renjin.sexp.Closure.apply(Closure.java:133)
at org.renjin.sexp.FunctionCall.eval(FunctionCall.java:80)
at org.renjin.primitives.special.AssignLeftFunction.assignLeft(AssignLeftFunction.java:58)
at org.renjin.primitives.special.AssignLeftFunction.apply(AssignLeftFunction.java:42)
at org.renjin.sexp.FunctionCall.eval(FunctionCall.java:80)
at org.renjin.sexp.ExpressionVector.eval(ExpressionVector.java:85)
at org.renjin.eval.Context.evaluate(Context.java:280)
at org.renjin.script.RenjinScriptEngine.eval(RenjinScriptEngine.java:174)
at org.renjin.script.RenjinScriptEngine.eval(RenjinScriptEngine.java:133)
at RTest.main(RTest.java:33)
Caused by: java.lang.NoSuchMethodError: org.renjin.gnur.api.Utils.R_qsort_I(Lorg/renjin/gcc/runtime/DoublePtr;Lorg/renjin/gcc/runtime/IntPtr;II)V
at org.renjin.cran.randomForest.rfutils__.makeA(rfutils.c:76)
at org.renjin.cran.randomForest.rf__.classRF(rf.c:218)
at org.renjin.cran.randomForest.randomForest.classRF(Unknown Source)
at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)
at org.renjin.primitives.Native.dotC(Native.java:190)
at org.renjin.primitives.R$primitive$$C.applyPromised(R$primitive$$C.java:69)
at org.renjin.sexp.BuiltinFunction.apply(BuiltinFunction.java:100)
at org.renjin.sexp.FunctionCall.eval(FunctionCall.java:80)
at org.renjin.sexp.Promise.doEval(Promise.java:87)
at org.renjin.sexp.Promise.force(Promise.java:81)
at org.renjin.primitives.R$primitive$$bracket.applyPromised(R$primitive$$bracket.java:34)
at org.renjin.sexp.BuiltinFunction.apply(BuiltinFunction.java:100)
at org.renjin.sexp.FunctionCall.eval(FunctionCall.java:80)
at org.renjin.primitives.special.AssignLeftFunction.assignLeft(AssignLeftFunction.java:58)
at org.renjin.primitives.special.AssignLeftFunction.apply(AssignLeftFunction.java:42)
at org.renjin.sexp.FunctionCall.eval(FunctionCall.java:80)
at org.renjin.primitives.special.BeginFunction.apply(BeginFunction.java:39)
at org.renjin.sexp.FunctionCall.eval(FunctionCall.java:80)
at org.renjin.primitives.special.IfFunction.apply(IfFunction.java:40)
at org.renjin.sexp.FunctionCall.eval(FunctionCall.java:80)
at org.renjin.primitives.special.BeginFunction.apply(BeginFunction.java:39)
at org.renjin.sexp.FunctionCall.eval(FunctionCall.java:80)
at org.renjin.sexp.Closure.applyPromised(Closure.java:200)
... 13 more
It looks like there are some binary incompatiblities between the new 3.5 beta builds and packages built for Renjin 0.9. For the time being, using Renjin 0.9.2726 should avoid the problem.
Renjin 3.5 should be released before the end of September and will include new builds for all CRAN+BioConductor packages.