DEV Community

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

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

hkmoon profile image HongKee Moon Updated on ・2 min read

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)

Editor guide