0

I have a simple JRI Code :

<%
    Rengine re = Rengine.getMainEngine();
    if (re==null){
        re = new Rengine (new String [] {"--vanilla"}, false, null); 

    }    

    re.eval("pull_data2 <- function(...){df3 <<- read.csv(file=\"/tmp/data.csv\", header=T)}");   
    re.eval("pull_data2()");
    String val = re.eval("df3").toString();


    %>

    <h3><%=val%></h3>

The values are getting printed on my browser indicating df3 is populated.

But when I login to R on my disk, there is no such "df3" variable. So, how can I see the variable from backend?

> df3
Error: object 'df3' not found 
>
Ashish Anand
  • 3,531
  • 6
  • 34
  • 45
  • R doesn't use on-disk workspaces (unlike S), so the variable only exists in the memory of the R session. If you want to store it to disk, you have to do so explicitly (using `saveRDS`, or similar). – Simon Urbanek Feb 04 '16 at 03:55

1 Answers1

0

Consider using the org.rosuda.REngine.REngine engine class. With this one you can easily configure a R console output which allows to track R variable assignments and R data processing through your server (back-end) logs. This is how you can inspect the data actually loaded in the REngine instance that runs with your JVM (which AFAIK is not the same as the R console that you would open on your computer)

See below example.

REngine re = REngine.getLastEngine();
if (re==null){
    re = REngine.engineForClass("org.rosuda.REngine.JRI.JRIEngine",
                                new String [] {"--vanilla"},
                                new REngineStdOutput(), // R console output
                                false); 
}    

re.parseAndEval("myfunction <- function() {myvar <<- \"something\"; print(paste0(\"logging 'myvar' in R:\", myvar));}");   
re.parseAndEval("myfunction()");

REXP jriObj = re.parseAndEval("myvar");
String myvar = jriObj.asString();
System.out.println("logging 'myvar' in Java: " + myvar);

The log will be as follow:

[1] "logging 'myvar' in R:something"
logging 'myvar' in Java: something
eblondel
  • 603
  • 4
  • 10