Пример #1
0
void td_r_invoke1(td_val_t *out, char *fname, td_val_t *arg)
{
  SEXP ans;
  string arg_name = 
    r_env.parseEval("paste(sample(letters, 10, replace=TRUE), collapse='')");
  r_env[arg_name] = from_td_val(arg);
  r_env.parseEval( (string(fname) + "(" + arg_name + ")").c_str(), ans);
  r_env.parseEvalQ(string("rm(") + arg_name + ")");
  R_PreserveObject(ans);
  to_td_val(out, ans);
}
Пример #2
0
void td_r_invokeGraph2(graph_t *out, char *fname, graph_t *arg, int k)
{
  char str[255];
  derived_graph_and_annotation_t ret;
  SEXP ans;
  r_env["m"] = graph_to_dgRMatrix(*arg);
  r_env["k"] = k;
  sprintf(str, "%s(m, k)", fname);
  r_env.parseEval(str, ans);
  r_env.parseEvalQ("rm(\"m\", \"k\")");
  List l(ans);
  ret.graph = SEXP_to_graph2(l["graph"], *out);
  ret.cluster_assignments = copy_to_c_type<IntegerVector>(l["clusters"]);
}