## Wednesday, 22 May 2013

### Undefined symbol (Rf_PrintWarnings) when using rpy 2.3.1 and R 3.0.1

So it seems the version of rpy2 (2.3.1) that comes with Ubuntu Raring isn't currently compatible with the version of R (3.0.1) in CRAN.

If you try to import it you'll get something like this:

$python Python 2.7.4 (default, Apr 19 2013, 18:28:01) [GCC 4.7.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import rpy2 >>> import rpy2.rinterface Traceback (most recent call last): File "", line 1, in File "/usr/lib/python2.7/dist-packages/rpy2/rinterface/__init__.py", line 93, in from rpy2.rinterface._rinterface import * ImportError: /usr/lib/python2.7/dist-packages/rpy2/rinterface/_rinterface.so: undefined symbol: Rf_PrintWarnings  However, the solution is pretty straightforward. First download the source for rpy2 2.3.1. Then extract it and edit the file rpy2-2.3.1/rpy/rinterface/_rinterface.c. Then comment out the following on lines 1764-1765:  extern void Rf_PrintWarnings(void); Rf_PrintWarnings(); /* show any warning messages */  Such that it appears as:  //extern void Rf_PrintWarnings(void); //Rf_PrintWarnings(); /* show any warning messages */  Change to the rpy2-2.3.1 directory where you extracted the source to and reinstall rpy2 using: sudo python setup.py install  Which should allow it to work again. $ python
Python 2.7.4 (default, Apr 19 2013, 18:28:01)
[GCC 4.7.3] on linux2