2014-04-20 1 views
20

Ich suche nach einer Möglichkeit, Python in R auf einem Windows-Betriebssystem aufzurufen. Da es anscheinend kein leicht verfügbares R-Paket dafür gibt (zumindest kein Paket, das kürzlich aktualisiert wurde), suche ich nach Hinweisen, wie man eine Reihe von Befehlen in ein R-Skript schreibt, die dann im Batch-Modus gesendet werden können Python.Wie kann man Python von R in einem Windows-Betriebssystem aufrufen?

Kurz gesagt, wie kann ich Python von R in einem Windows-Betriebssystem aufrufen?

Edit: Um zu klären, bin ich nicht fragen über Aufruf R von Python; vielmehr darum bitte ich Python von R. Aufruf

Update: Nach dem, was ich bisher gesammelt habe, hier ist ein Basissatz von Befehlen in einem Windows-Betriebssystem Python von R ausgeführt wird:

# (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;"') 

Weder Diese Ansätze sind auf der Ebene der Interaktivität, die für die Analyse von Fluiddaten unter Verwendung von Python in R unter Windows benötigt wird. Die einfachste Lösung könnte das Schreiben einer einfachen R-Funktion sein, die (1) einen angegebenen R-Datenrahmen nach Python exportiert, (2) die in R geschriebene Pythonsyntax analysiert (stringr und system('python -c')) und dann (3) die Daten optional exportiert zurück zu R. Es wäre eine Pseudo-Interaktivität in R basierend auf dem Aktualisieren einer temporären Python-Datei über die R-Konsole.

+0

Hier ist eine weitere nützliche Verbindung in Bezug auf Aufruf Python von R. https://stackoverflow.com/questions/10155703/call-python-with-system-in-r -to-run-a-python-script-emulieren-the-python-conso –

+0

Dies ist eine gute Frage, da es mich warnt, dass Python von R aufrufen ist möglich. Aber kann OP vielleicht Leute wie mich lehren, warum das etwas ist, was man tun möchte? – Heisenberg

+0

Muss ich eine spezielle Bibliothek in Python installieren?Wenn ich diesen Code oben in RStudio mit Python geöffnet habe, habe ich nichts getan: (( –

Antwort

5

Sie können dieses Paket verwenden PythonInR

+0

Falls Sie [rPython-win] (https://github.com/cjgb/rPython-win) erkundet haben, wie wird es mit PythonInR verglichen? –

-1

Wenn Sie Python von R aufrufen möchten, versuchen Sie rPython, aber es ist nicht für Windows OS. Oder versuchen Sie RSPython hat eine schwache Unterstützung für Windows. Eine andere nützliche link.

Endlich können Sie versuchen, etwas wie Cygwin zu verwenden, um Linux-Anwendung auf Ihrem Windows-Betriebssystem auszuführen. Mehr Arbeitsbelastung wird sein, einige virtuelle Umgebungen wie VMware oder VirtualBox auf Windows zu verwenden und Linux zu installieren und Ihre Arbeit auszuführen.

+2

) Ich schätze deine Antwort, aber rPython funktioniert nicht in einem Windows-Betriebssystem. Der Blog, zu dem du verlinken folgst: "Der Hauptnachteil des rPython-Pakets ist es läuft derzeit nicht unter Windows. "Ihre anderen Links sind auch für Pakete, die nicht in Windows funktionieren, wie einer der Autoren über RSPython schreibt:" HINWEIS: Dies erlaubt derzeit nicht, R in Python unter Windows einzubetten. " – statsRus

0

Ich habe eine Lösung gefunden, die tatsächlich auf einem Windows-Betriebssystem funktionieren könnte:

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

Der Artikel beschreibt ein Setup für Ubuntu, wo RCPP als Zwischenschicht zwischen R und Python verwendet wird. Obwohl ich das noch nicht ausprobiert habe, sehe ich derzeit keinen Grund, warum diese Lösung nicht auch unter Windows funktionieren sollte.

1

eine Python-Datei erstellen ....

# -*- 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) 

speichern es an einen Ort (I verwendet c: /deleteme/pythonRun.py)

In R, diesen Code ausführen.

#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  
+0

woooo hooo !! das Limit Problem behoben. Angenommen, Sie wollen alles im Speicher, hier ya gehen, das ist, wie Sie es tun! :) https://www.linkedin.com/pulse/using-python- r-windows-7-subhash-jaini – user2804240

Verwandte Themen