I have written a small Java client which does some calculations on an Rserver. For this purpose, there are functions.r– and libraries.r files on the server side, which have to be sourced, before the actual calculation can be done.
Currently I load the files on every new connection:
import org.rosuda.REngine.Rserve.RConnection;
public class RserveTester {
public void doOnRserve() {
RConnection c = new RConnection( "rserve.domain.local" );
c.login( "foo", "user" );
c.eval("source(\"/home/rserve/lib/libraries.r\")");
c.eval("source(\"/home/rserve/lib/functions.r\")");
c.eval( "someCalculation()" )
c.close();
}
}
where doOnRserve() is called due to some events on the client side couple of times in a minute.
My Question is: Is it possibility to source the libraries only once, such that they are available during all new RSessions without individual sourcing?
I tried on the client side something like:
c.serverSource("/home/rserve/lib/libraries.r" )
c.serverSource("/home/rserve/lib/functions.r" )
Which gives me te following exception (no idea why this does not work wile eval does):
org.rosuda.REngine.Rserve.RserveException: serverSource failed, request status: access denied (local to the server)
Can I start the Rserve with a specific .Rprofile?
EDIT:
Basically, there seam to be three possible methods:
- Let the /home/rserve/.Rprofile source the .r files. But this seams to source them each time I call
new RConnection() - Passing the source commands directly to R when starting Rserve (no idea how to do this).
- My preferred method: doing it from the client side using serverSource(), which throws these “access denied” exceptions.
EDIT2:
Rserve version v0.6-8 (338)
R version 2.15.2 for x86_64-pc-linux-gnu.
This is trivially done by adding
sourcelines to your configuration file, i.e., puttingin
/etc/Rserv.confwill source/foo/bar.Ron startup. If you want to use another config file, use--RS-confcommand line argument to specify it. Finally, Rserve 1.x supports--RS-sourceoption on the command line as well.Without the quotations in the filepath, it may give File Not Found Error.
BTW: you mentioned
serverSource()access denied – that means you did not enable control commands in Rserve (control enablein the configuration or--RS-enable-controlon the command line).PS: Please use stats-rosuda-devel mailing list for Rserve questions.