R and Python in one Jupyter notebook R and Python in one Jupyter notebook python python

R and Python in one Jupyter notebook


Yes, it is possible! Use rpy2.

You can install rpy2 with: pip install rpy2

Then run %load_ext rpy2.ipython in one of your cells. (You only have to run this once.)

Now you can do the following:

Python cell:

# enables the %%R magic, not necessary if you've already done this%load_ext rpy2.ipythonimport pandas as pddf = pd.DataFrame({    'cups_of_coffee': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],    'productivity': [2, 5, 6, 8, 9, 8, 0, 1, 0, -1]})

R cell:

%%R -i df -w 5 -h 5 --units in -r 200# import df from global environment# make default figure size 5 by 5 inches with 200 dpi resolutioninstall.packages("ggplot2", repos='http://cran.us.r-project.org', quiet=TRUE)library(ggplot2)ggplot(df, aes(x=cups_of_coffee, y=productivity)) + geom_line()

And you'll get your pretty figure plotting data from a python Pandas DataFrame.


Using @uut's answer for running R in a jupyter notebook within python kernel (in MacOS), the following worked for me.

%%Rshould always be at the start of the cell else you will get the error as shown in figure belowsyntax error if %%R not at the top of the cell

The following is the right way:Right way to invoke R within python kernel

Also %load_ext rpy2.ipython should come before %%R hence put it in a different cell above it as shown in the figures.


UPDATE April 2018,

RStudio has also put out a package:https://blog.rstudio.com/2018/03/26/reticulate-r-interface-to-python/

for which it is possible to run multiple code chunks in different languages using the R markdown notebook, which is similar to a jupyter notebook.

In my previous post, I said that the underlying representation of objects is different. Actually here is a more nuanced discussion of the underlying matrix representation of R and python from the same package:https://rstudio.github.io/reticulate/articles/arrays.html

Old post:

It will be hard for you to use both R and Python syntax in the same notebook, mostly because the underlying representation of objects in the two languages are different. That said, there is a project that does try to allow conversion of objects and different languages in the same notebook:http://beakernotebook.com/features

I haven't used it myself but it looks promising