use of org.renjin.sexp.SEXP in project rsession by yannrichet.
the class RenjinSession method set.
@Override
public boolean set(String varname, double[][] data, String... names) {
if (data == null) {
if (names == null) {
return false;
}
List<SEXP> nulls = new LinkedList<>();
for (int i = 0; i < names.length; i++) {
nulls.add(Null.INSTANCE.clone());
}
ListVector l = new ListVector(nulls);
synchronized (R) {
R.put(varname, l);
R.put(varname + ".names", new StringArrayVector(names));
try {
R.eval("names(" + varname + ") <- " + varname + ".names");
// R.eval(varname + " <- data.frame(" + varname + ")");
} catch (ScriptException ex) {
ex.printStackTrace();
return false;
}
}
return true;
} else {
DoubleVector[] d = new DoubleVector[data[0].length];
for (int i = 0; i < d.length; i++) {
d[i] = new DoubleArrayVector(DoubleArray.getColumnCopy(data, i));
}
ListVector l = new ListVector(d);
// l.setAttribute(Symbols.NAMES, new StringArrayVector(names));
synchronized (R) {
R.put(varname, l);
// R.put("names("+varname+")",new StringArrayVector(names));
R.put(varname + ".names", new StringArrayVector(names));
try {
R.eval("names(" + varname + ") <- " + varname + ".names");
R.eval(varname + " <- data.frame(" + varname + ")");
} catch (ScriptException ex) {
ex.printStackTrace();
return false;
}
}
return true;
}
}
Aggregations