package com.pivotalservices.java2r;
import org.rosuda.REngine.REXP;
import org.rosuda.REngine.REXPMismatchException;
public class REnvironment {
private final R r;
private final REXP env;
REnvironment(R r, REXP env) throws RException {
this.r = r;
this.env = env;
}
public void eval(String expr) throws RException {
this.eval(expr, null);
}
public double evalDouble(String expr) throws RException {
return this.evalDouble(expr, null);
}
public String[] evalStrings(String expr) throws RException {
return this.evalStrings(expr, null);
}
public double[] evalDoubles(String expr) throws RException {
return this.evalDoubles(expr, null);
}
public void eval(String expr, RLogger logger) throws RException {
r.eval(expr, env, false, logger);
}
public double evalDouble(String expr, RLogger logger) throws RException {
try {
return r.eval(expr, env, true, logger).asDouble();
} catch (REXPMismatchException e) {
throw new RException(e);
}
}
public String[] evalStrings(String expr, RLogger logger) throws RException {
try {
return r.eval(expr, env, true, logger).asStrings();
} catch (REXPMismatchException e) {
throw new RException(e);
}
}
public double[] evalDoubles(String expr, RLogger logger) throws RException {
try {
return r.eval(expr, env, true, logger).asDoubles();
} catch (REXPMismatchException e) {
throw new RException(e);
}
}
}