/** * * @param input * inputstring * @return Rdata */ public String eString(final String input) { final String resultOnFailure = ""; try { final Object evaluationResult = this.evalWithR(input); final REXPString stringResult = (REXPString) evaluationResult; return stringResult.toString(); } catch (final InvalidREvaluationResultException exc) { RBridgeControl.LOGGER.error(exc.getMessage(), exc); return resultOnFailure; } }
/** * Wraps the execution of an arbitrary R expression. Both errors and results are logged. * * @param input * The R expression to evaluate. * * @return The result or the error of the evaluation of the given R expression. The method tries to convert it into a string, if possible. */ public Object evalWithR(final String input) throws InvalidREvaluationResultException { Object out = null; try { out = this.rCon.eval(input); Object output = null; if (out instanceof REXPString) { output = ((REXPString) out).asString(); } else if (out instanceof REXPLogical) { output = ((REXPLogical) out).toDebugString(); } else if (out != null) { output = out; } else { throw new InvalidREvaluationResultException("Got a null result for evaluation input: \"" + input + "\""); } RBridgeControl.LOGGER.trace("> REXP: {} return: {}", input, output); } catch (final REXPMismatchException exc) { RBridgeControl.LOGGER.error("Error R expr.: {} Cause: {}", input, exc.getMessage(), exc); } return out; }
/** * Wraps the execution of an arbitrary R expression. Both errors and results are logged. * * @param input * The R expression to evaluate. * * @return The result or the error of the evaluation of the given R expression. The method tries to convert it into a string, if possible. */ public Object evalWithR(final String input) throws InvalidREvaluationResultException { Object out = null; try { out = this.rCon.eval(input); Object output = null; if (out instanceof REXPString) { output = ((REXPString) out).asString(); } else if (out instanceof REXPLogical) { output = ((REXPLogical) out).toDebugString(); } else if (out != null) { output = out; } else { throw new InvalidREvaluationResultException("Got a null result for evaluation input: \"" + input + "\""); } RBridgeControl.LOG.trace("> REXP: " + input + " return: " + output); } catch (final REXPMismatchException exc) { RBridgeControl.LOG.error("Error R expr.: " + input + " Cause: " + exc, exc); } return out; }
/** * * @param input * string * @return {@link Double#NaN} in case of error, else dbvalue */ public double eDbl(final String input) { final double resultOnFailure = Double.NaN; try { final Object evaluationResult = this.evalWithR(input); final REXPDouble doubleResult = (REXPDouble) evaluationResult; return doubleResult.asDouble(); } catch (final REXPMismatchException exc) { RBridgeControl.LOGGER.error("Error casting value from R: {} Cause: {}", input, exc); return resultOnFailure; } catch (final InvalidREvaluationResultException exc) { RBridgeControl.LOGGER.error(exc.getMessage(), exc); return resultOnFailure; } }
/** * * @param input * inputstring * @return Rdata */ public double[] eDblArr(final String input) { final double[] resultOnFailure = new double[0]; try { final Object evaluationResult = this.evalWithR(input); final REXPVector vectorResult = (REXPVector) evaluationResult; return vectorResult.asDoubles(); } catch (final REXPMismatchException e) { return resultOnFailure; } catch (final InvalidREvaluationResultException e) { RBridgeControl.LOGGER.error(e.getMessage(), e); return resultOnFailure; } }
/** * * @param input * inputstring * @return Rdata */ public String eString(final String input) { final String resultOnFailure = ""; try { final Object evaluationResult = this.evalWithR(input); final REXPString stringResult = (REXPString) evaluationResult; return stringResult.toString(); } catch (final InvalidREvaluationResultException exc) { RBridgeControl.LOG.error(exc.getMessage(), exc); return resultOnFailure; } }
/** * * @param input * inputstring * @return Rdata */ public double[] eDblArr(final String input) { final double[] resultOnFailure = new double[0]; try { final Object evaluationResult = this.evalWithR(input); final REXPVector vectorResult = (REXPVector) evaluationResult; return vectorResult.asDoubles(); } catch (final REXPMismatchException e) { return resultOnFailure; } catch (final InvalidREvaluationResultException e) { RBridgeControl.LOG.error(e.getMessage(), e); return resultOnFailure; } }
/** * * @param input * string * @return {@link Double#NaN} in case of error, else dbvalue */ public double eDbl(final String input) { final double resultOnFailure = Double.NaN; try { final Object evaluationResult = this.evalWithR(input); final REXPDouble doubleResult = (REXPDouble) evaluationResult; return doubleResult.asDouble(); } catch (final REXPMismatchException exc) { RBridgeControl.LOG.error("Error casting value from R: " + input + " Cause: " + exc); return resultOnFailure; } catch (final InvalidREvaluationResultException exc) { RBridgeControl.LOG.error(exc.getMessage(), exc); return resultOnFailure; } }