R and Python in one Jupyter notebook

前端 未结 5 710
春和景丽
春和景丽 2020-12-02 04:59

Is it possible to run R and Python code in the same Jupyter notebook. What are all the alternatives available?

  1. Install r-essentials and create R notebooks in J
相关标签:
5条回答
  • 2020-12-02 05:38

    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.ipython
    
    import pandas as pd
    df = 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 resolution
    
    install.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.

    0 讨论(0)
  • 2020-12-02 05:41

    SoS kernel is another option.

    Don't know how well it performs yet, just started using it.

    The SoS kernel allows you to run different languages within the same notebook, including Python and R.

    SoS Polyglot Notebook - Instructions for Installing Desired Languages

    Here is an example of a notebook with Python and R cells.


    *Update:

    In terms of sharing variables, one can use the magics %use and %with. "SoS automatically shares variables with names starting with sos among all subkernels"1.

    Ex.

    Starting cell in R:

    %use R
    sos_var=read.csv('G:\\Somefile.csv')
    dim(sos_var)
    

    Output:

    51  13
    

    Switching to python:

    %with Python3
    sos_var.shape
    

    Output:

    (51, 13)
    
    0 讨论(0)
  • 2020-12-02 05:57

    I would not recommend to use two languages in a single Notebook. Instead, you can orchestrate R and Python code in project level by connecting them on input\output file base. Data science tools like DVC can help you in order to do that.

    You might find some code examples in this blog post: Best practices of orchestrating Python and R code in ML projects

    0 讨论(0)
  • 2020-12-02 06:01

    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 below

    The following is the right way:

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

    0 讨论(0)
  • 2020-12-02 06:04

    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

    0 讨论(0)
提交回复
热议问题