Skip to content
Prev 260884 / 398502 Next

Processing large datasets

With PostgreSQL at least, R can also be used as implementation
language for stored procedures. Hence data transfers between 
processes can be avoided alltogether. 

   http://www.joeconway.com/plr/

Implemention of such a procedure in R appears to be straighforward:
 
   CREATE OR REPLACE FUNCTION overpaid (emp) RETURNS bool AS '
      if (200000 < arg1$salary) {
          return(TRUE)
      }
      if (arg1$age < 30 && 100000 < arg1$salary) {
          return(TRUE)
      }
      return(FALSE)
    ' LANGUAGE 'plr';

  CREATE TABLE emp (name text, age int, salary numeric(10,2));
    INSERT INTO emp VALUES ('Joe', 41, 250000.00);
    INSERT INTO emp VALUES ('Jim', 25, 120000.00);
    INSERT INTO emp VALUES ('Jon', 35, 50000.00);
 

  SELECT name, overpaid(emp) FROM emp;
   name | overpaid
    ------+----------
    Joe  | t
    Jim  | t
    Jon  | f
   (3 rows)


Best
On Wednesday 25 May 2011 14:12:23 Jonathan Daily wrote: