DEV Community

Cover image for Sharing data among Python, R, Java, Javascript in Jupyter notebook
HongKee Moon
HongKee Moon

Posted on • Updated on

Sharing data among Python, R, Java, Javascript in Jupyter notebook

This will be the conclusion of my journey of exploring polyglot data visualization. As a scientific software engineer, there are many chances to cope with various kinds of environments where scientists are keen on. Personally, I prefer to using javascript because it is platform agnostic.

I have one post how to communicate between python and javascript/java thanks to BeakerX extension.

Today we take a look at how to exchange data between R and Python cells in Jupyter. The summary figure shows how to share data among R, Python, Java, Javascript in Jupyter notebook.


rpy2 (

rpy2 is designed to facilitate the use of R by Python programmers. R objects are exposed as instances of python classes and R functions as bound methods to those objects.

In order to use rpy2 in jupyter notebooks, we need to install them first. Please, refer

Then, enable it with load_ext magic in the jupyter cell.

%load_ext rpy2.ipython

For the convenience, let's put this extension in file which is located in ~/.ipython/profile_defaults. If there is no config file in the location, please, create Then, paste the below content.

c.IPKernelApp.extensions = [

Now you can freely use the magics provided by rpy2. Let's check the output of pi from R.

import rpy2.robjects as robjects
pi = robjects.r['pi']
  1. Create a dataframe in Python

    import pandas as pd
    python_df = pd.DataFrame({'A': [2, 3, 5, 2, 3, 4, 6, 2, 5, 9],
                              'B': [4, 2, 4, 6, 2, 4, 6, 7, 3, 5]})
  2. Use the dataframe in R with -i flag in the R magic

    %%R -i python_df
    # Pass the specific dataframe to R using the -i option
    plot(python_df, main="Plotting a Python Dataframe in R",
        col="red", pch=12)
  3. Export R variables with -o flag in the R magic

    %%R -o model -o coef
    # R to Python
    model <- lm(B ~ A, data=python_df)
    coef <- model$coefficients
  4. Use the exported R variables with rpy2

    import rpy2.robjects as robjects

Normally, the exported R dataframe is automatically translated as a panda's dataframe in Python.

%%R -o cars_df

cars_df <- mtcars
# print(cars_df)
from beakerx import *
from beakerx.object import beakerx


However, there is no direct way from R to Java/Javascript now. Hopefully, BeakerX team will provide the auto-translation feature for R sooner or later.

Here is the gist including all the snippets shown in the article.

Happy coding!

Discussion (0)