PL/R has support for auto-loading R code during interpreter initialization. It uses a special table, plr_modules, which is presumed to contain modules of R code. If this table exists, the modules defined are fetched from the table and loaded into the R interpreter immediately after creation.
The definition of the table plr_modules is as follows:
CREATE TABLE plr_modules (
  modseq int4,
  modsrc text
);
     The field modseq is used to control the order of installation. The field modsrc contains the full text of the R code to be executed, including assignment if that is desired. Consider, for example, the following statement:
INSERT INTO plr_modules
  VALUES (0, 'pg.test.module.load <-function(msg) {print(msg)}');
     
     This statement will cause an R function named pg.test.module.load
      to be created in the R interpreter on initialization. A PL/R
     function may now simply reference the function directly as follows:
     
create or replace function pg_test_module_load(text) returns text as '
  pg.test.module.load(arg1)
' language 'plr';
select pg_test_module_load('hello world');
 pg_test_module_load 
---------------------
 hello world
(1 row)
     
The table plr_modules must be readable by all, but it is wise to make it owned and writable only by the database administrator.