web-dev-qa-db-fra.com

R et Python dans un bloc-notes Jupyter

Est-il possible d’exécuter R et Python dans le même bloc-notes Jupyter. Quelles sont toutes les alternatives disponibles?

  1. Installez r-essentials et créez des cahiers R dans Jupyter.
  2. Installez rpy2 et utilisez les fonctions rmagic.
  3. Utilisez un cahier à becher.

Laquelle des 3 options ci-dessus est fiable à exécuter Python et R) (variables de partage et visualisations) ou existe-t-il déjà une meilleure option?

36
Sailendra Pinupolu

Oui c'est possible! Utilisez RPY2.

Vous pouvez installer rpy2 avec: pip install rpy2

Puis lancez %load_ext rpy2.ipython dans l'une de vos cellules. (Vous devez seulement exécuter cette fois.)

Maintenant, vous pouvez faire ce qui suit:

Cellule Python:

# 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]
})

Cellule R:

%%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()

Et vous obtiendrez votre jolie figure en traçant les données d’un python Pandas DataFrame.

39
uut

En utilisant la réponse de @ uut pour exécuter R dans un cahier jupyter dans python du noyau (sous MacOS), les opérations suivantes ont fonctionné pour moi.

%%R _ devrait toujours être au début de la cellule, sinon vous obtiendrez l’erreur indiquée dans la figure ci-dessous syntax error if %%R not at the top of the cell

Ce qui suit est la bonne façon: Right way to invoke R within python kernel

Également %load_ext rpy2.ipython devrait venir avant %%R donc placez-le dans une cellule différente au-dessus, comme indiqué sur les figures.

11
Abhimanu Kumar

UPDATE avril 2018,

RStudio a également publié un package: https://blog.rstudio.com/2018/03/26/reticulate-r-interface-to-python/

pour lequel il est possible d'exécuter plusieurs fragments de code dans différentes langues à l'aide du bloc-notes R markdown, similaire à un bloc-notes jupyter.

Dans mon précédent post, je disais que la représentation sous-jacente des objets est différente. En fait, voici une discussion plus nuancée de la représentation matricielle sous-jacente de R et python du même paquet: https://rstudio.github.io/reticulate/articles/arrays. html

Ancien post:

Vous aurez du mal à utiliser les syntaxes R et Python dans le même bloc-notes, principalement parce que la représentation sous-jacente des objets dans les deux langages est différente. Cela dit, il existe un projet qui essayez d'autoriser la conversion d'objets et de langues différentes dans le même bloc-notes: http://beakernotebook.com/features

Je ne l'ai pas utilisé moi-même mais ça a l'air prometteur

5
Allen Wang

Le noyau SoS est une autre option.

Je ne sais pas comment il fonctionne encore, je viens juste de commencer à l'utiliser.

Le noyau SoS vous permet d’exécuter différentes langues dans le même bloc-notes, notamment Python et R.

SoS Polyglot Notebook - Instructions pour l’installation des langues souhaitées

Voici un exemple de bloc-notes avec cellules Python et R .


*Mise à jour:

En termes de partage de variables, on peut utiliser la magie %use et %with. "SoS partage automatiquement les variables avec des noms commençant par sos parmi tous les sous-noyaux" 1 .

Ex.

Cellule de départ en R:

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

Sortie:

51  13

Passage en python:

%with Python3
sos_var.shape

Sortie:

(51, 13)
2
rm1104