# Using R in Python for statistical learning/data science

*This article was first published on*

Want to share your content on python-bloggers? click here.

**T. Moudiki's Webpage - Python**, and kindly contributed to python-bloggers. (You can report issue about the content on this page here)Want to share your content on python-bloggers? click here.

As someone who’s been using the statistical computing language R for 15 years now, I’d been wondering if there was **a way to call my favorite R functions from Python**. If you’ve been asking yourself too, yes, there is a way: **using rpy2**.

`rpy2`

can be installed from the command line as:

pip install rpy2

In order to install the R packages necessary for our demo, we’ll use the following Python code snippet (that I adapted from here: http://www.pybloggers.com/2015/12/r-from-python-an-rpy2-tutorial/). This script first **checks if the R packages that we need are already installed, and if not, it installs them**:

import rpy2.robjects as robjects import rpy2.robjects.packages as rpackages from rpy2.robjects import numpy2ri from rpy2.robjects.packages import importr from rpy2.robjects.vectors import StrVector import numpy as np required_packages = ['base', 'forecast'] # list of required R packages if all(rpackages.isinstalled(x) for x in required_packages): check_packages = True # True if packages are already installed else: check_packages = False # False if packages are not installed if check_packages == False: # Not installed? Then install. utils = rpackages.importr('utils') utils.chooseCRANmirror(ind=1) packages_to_install = [x for x in required_packages if not rpackages.isinstalled(x)] if len(packages_to_install) > 0: utils.install_packages(StrVector(packages_to_install)) check_packages = True

If the script doesn’t work on your machine, you’ll have to install the R packages (actually, R package `forecast`

) from the R console (as you usually do that) and continue. Now in Python, we can **import all the modules** that we want for our demo:

import rpy2.robjects as robjects import rpy2.robjects.packages as rpackages from rpy2.robjects import numpy2ri from rpy2.robjects.packages import importr from rpy2.robjects.vectors import StrVector import numpy as np

Plus (still in Python), the **R packages** and **R objects** :

r = robjects.r base = importr('base') forecast = importr('forecast') graphics = importr('graphics') grdevices = importr('grDevices')

For the **creation of an R time series** object, we do:

base.set_seed(123) # reproducibility seed x = r.ts(r.rnorm(n=10)) # simulate the time series print(x)

Time Series: Start = 1 End = 10 Frequency = 1 [1] -0.56047565 -0.23017749 1.55870831 0.07050839 0.12928774 1.71506499 [7] 0.46091621 -1.26506123 -0.68685285 -0.44566197

**Forecasting** our time series using the Theta method is done as:

# Forecasting horizon h = 5 # Use theta for forecasting res_thetaf = forecast.thetaf(x, h = h) print(res_thetaf)

Point Forecast Lo 80 Hi 80 Lo 95 Hi 95 11 -0.3349355 -1.631470 0.9615991 -2.317814 1.647943 12 -0.3759211 -1.672456 0.9206135 -2.358800 1.606958 13 -0.4169067 -1.713441 0.8796279 -2.399785 1.565972 14 -0.4578923 -1.754427 0.8386423 -2.440771 1.524986 15 -0.4988779 -1.795413 0.7976567 -2.481757 1.484001

We can even **plot the time series forecast** (this has been tested on macOS, hopefully it works on your machine too):

grdevices.X11() graphics.plot(res_thetaf)

For those who wonder if this is an ancient-medieval-technique-revealed-by-T (and are interested in hacking all my social media), **nope it isn’t**. You can find out in the official package documentation. I’d be interested to **hear if there are Python packages similar to rpy2**. If yes, then **drop me an email!**

**Note:** I am currently looking for a *gig*. You can hire me on Malt or send me an email: **thierry dot moudiki at pm dot me**. I can do descriptive statistics, data preparation, feature engineering, model calibration, training and validation, and model outputs’ interpretation. I am fluent in Python, R, SQL, Microsoft Excel, Visual Basic (among others) and French. My résumé? Here!

**leave a comment**for the author, please follow the link and comment on their blog:

**T. Moudiki's Webpage - Python**.

Want to share your content on python-bloggers? click here.