web-dev-qa-db-fra.com

Python pour le langage de programmation R

Je suis assez nouveau pour R et assez habitué au python. Je ne suis pas si à l'aise d'écrire du code R. Je recherche python avec R, ce qui me permet d'utiliser les packages R de la manière Pythonic .

J'ai fait des recherches sur google et trouvé quelques packages qui peuvent le faire:

Mais vous ne savez pas lequel est le meilleur? Lequel a le plus de contributeurs et est plus activement utilisé?

Veuillez noter que ma principale exigence est un moyen Pythonic pour accéder aux packages R .

48
darshan

Comme l'a souligné @lgautier, il y a déjà ne autre réponse à ce sujet . Je laisse ma réponse ici car elle ajoute l'expérience d'approcher R en tant que novice, connaissant d'abord Python.


J'utilise à la fois Python et R et sympathise avec votre besoin en tant que nouveau venu dans R.

Étant donné que toute réponse que vous obtiendrez sera subjective, je résume quelques points de mon expérience:

  • J'utilise rpy2 comme interface et je trouve que c'est 'Pythonic', stable, prévisible et suffisamment efficace pour mes besoins. Je n'ai pas utilisé les autres packages donc ce n'est pas un commentaire sur eux, plutôt sur les mérites de rpy2 lui-même.
  • MAIS ne vous attendez pas à ce qu'il y ait un moyen facile d'utiliser R dans Python sans apprendre les deux. Je trouve que l'ajout d'une interface entre les deux langues permet de coder facilement lorsque vous connaissez les deux, mais un cauchemar de débogage pour quelqu'un qui est déficient dans l'une des langues.

Mon conseil:

  1. Pour la plupart des applications, Python a des packages qui vous permettent de faire la plupart des choses que vous voulez faire dans R, de la manipulation des données au traçage. Découvrez SciPy , NumPy , pandas , BioPython , matplotlib et d'autres packages scientifiques , ou même les distributions complètes Anaconda ou Enthought python. Cela vous permet de rester dans l'environnement Python et vous fournit la plupart de la puissance dont vous avez besoin.
  2. Dans le même temps, vous voudrez la vaste gamme de packages spécialisés de R, alors passez un peu de temps à l'apprendre dans un environnement interactif. J'ai trouvé qu'il était presque impossible de maîtriser même le R de base sur la ligne de commande, mais RStudio et les tutoriels à Quick-R et Learn-R got je vais très vite.

Une fois que vous connaissez les deux, vous ferez de la magie avec rpy2 sans les horreurs du débogage multilingue.


De nouvelles ressources

Mise à jour du 29 janvier 2015

Cette réponse s'est avérée populaire et j'ai donc pensé qu'il serait utile de signaler deux ressources plus récentes:

Le triplet R , Rserve et pyRserve permet la construction d'un pont réseau à partir de Python à R: Désormais, les fonctions R peuvent être appelées à partir de Python comme si elles étaient implémentées en Python, et même des scripts R complets peuvent être exécutés via cette connexion.

  • Il est maintenant possible de combiner R et Python en utilisant rmagic dans IPython/Jupyter facilitant considérablement le travail de production de recherches reproductibles et de cahiers qui combinent les deux langues.
60
gauden

Une question sur comparant rpy2, pyrserve et pyper les uns aux autres a été répondue sur le site plus tôt.

Concernant le nombre de contributeurs, je dirais que les 3 ont un nombre relativement faible. Un site comme Ohloh peut donner une réponse plus détaillée.

Il est difficile de déterminer dans quelle mesure un package est utilisé. Une indication pourrait être le nombre de téléchargements, une autre pourrait être le nombre de publications sur les listes de diffusion ou le nombre de questions sur un site comme stackoverflow, le nombre d'autres packages l'utilisant ou le citant, le nombre de CV ou de postes vacants mentionnant le paquet. Autant je pense que je pourrais donner une évaluation juste, je pourrais aussi être considéré comme ayant un conflit d'intérêts. ;-)

Tous les trois ont leurs avantages et leurs inconvénients. Je dirais que vous basez votre choix sur cela.

4
lgautier

Mon expérience personnelle a été avec Rpy, pas Rpy2. Je l'ai utilisé pendant un certain temps, mais je l'ai abandonné en faveur de l'utilisation des commandes system. Un cas typique pour moi était d'exécuter un modèle FORTRAN en utilisant Python et post-traitement avec R. D'après mon expérience, la solution la plus simple était de créer un outil de ligne de commande en utilisant R, ce qui est assez simple (au moins sous Linux). L'outil de ligne de commande pourrait être exécuté à la racine de l'exécution du modèle, et le script produirait un ensemble d'objets et de tracés R dans un répertoire Routput. L'avantage de déconnecter R et Python de cette manière était que je pouvais facilement déboguer le code R séparément du code Python.

Je pense que Rpy brille vraiment quand beaucoup de communication aller-retour entre R et Python est nécessaire. Mais si la fonctionnalité est bien séparable, et la surcharge des E/S disque) n'est pas trop mauvais, je m'en tiendrai aux appels system. Voir ?system pour plus d'informations sur les appels système et Rscript pour exécuter les scripts R comme outil de ligne de commande.

Concernant votre souhait d'écrire du code R de manière Python, ce n'est pas possible car toutes les solutions vous obligent à écrire du code R dans la syntaxe R. Pour Rpy cela signifie la syntaxe R , mais un peu différent (pas de . par exemple). Je suis d'accord avec @gauden qu'il n'y a pas de raccourci dans l'utilisation de R à Rpy.

3
Paul Hiemstra