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.
Vous pouvez utiliser ce paquet PythonInR
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
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.