web-dev-qa-db-fra.com

Comment appeler Python à partir de R sous Windows?

Je cherche un moyen d'appeler python dans R sur un système d'exploitation Windows. Comme il ne semble pas y avoir de paquet R facilement disponible (du moins aucun paquet n’a été mis à jour récemment), je cherche des pistes pour écrire un ensemble de commandes dans un script R qui peut ensuite être envoyé en mode de traitement par lots. python.

En bref, comment appeler python à partir de R sous Windows?

Edit: Pour clarifier, je pas demande à propos de l'appel de R à partir de python; je demande plutôt à appeler python de R.

Mise à jour: sur la base de ce que j'ai recueilli jusqu'à maintenant, voici un ensemble de commandes de base sur l'exécution de python à partir de R dans un système d'exploitation Windows:

# (1) basic python commands called from R
system('python -c "a = 2 + 2; print a"') 
system('python -c "a = \'hello world\' ; print a; import pandas"')

# (2) if you have a python file you've already created (which I've referred to as "my.py"), then you can run it in R as follows:
system("python C:\\Users\\Name\\Desktop\\my.py")

# or alternatively:
system('python -c "import sys; sys.path.append(\'C:\\Users\\Name\\Desktop\'); import my;"')

Aucune de ces approches ne se situe au niveau d'interactivité requis pour l'analyse de données fluides à l'aide de python in R sur un système d'exploitation Windows. La solution la plus simple pourrait être d'écrire une simple fonction R qui (1) exporte un cadre de données R spécifié vers python, (2) analyse la syntaxe python écrite en R (avec stringr et system('python -c')), puis (3) exporte éventuellement les données. retour à R. Ce serait une pseudo-interactivité dans R basée sur la mise à jour d'un fichier python temporaire via la console R.

22
statsRus

Vous pouvez utiliser ce paquet PythonInR

6
A. Shlash

Faire un fichier python ....

# -*- coding: utf-8 -*-
"""
Created on Wed Mar  9 09:55:46 2016

@author: Subhash Jaini
"""

import pandas as pd
d = {'First' : [1., 2., 3.],'Second' : [1,2,3]}


AA = pd.DataFrame(d)
print(AA)

enregistrez-le à un endroit (j'ai utilisé c: /deleteme/pythonRun.py)

Dans R, exécutez ce code.

#calls the python script to run in Shell
BlobReturnedFromPython = Shell('python c:/deleteme/pythonRun.py',intern=TRUE)
#get the first line and turn it to your header
HEADER = gsub(" ","",unlist(strsplit(as.character(BlobReturnedFromPython[1]),"  ")))[-1]
#all the rest of the data is non header data
NONHEADER = BlobReturnedFromPython[2:(length(BlobReturnedFromPython)-1)]
#turnthat blob (which is seperated by about 4 spaces )
DATA = data.frame(sapply(NONHEADER,function(x){unlist(strsplit(x,"    "))}))
#brings those names into the data set
names(DATA) <- HEADER
DATA    
1
user2804240

J'ai trouvé une solution qui pourrait fonctionner sur un système d'exploitation Windows:

http://gallery.rcpp.org/articles/rcpp-python/

L'article décrit une configuration pour Ubuntu, où Rcpp est utilisé en tant que couche intermédiaire entre R et Python. Bien que je n'ai pas encore essayé, je ne vois actuellement aucune raison pour que cette solution ne fonctionne pas aussi bien sous Windows.

0
user1934212