Der Angriff der Riesenschlangen.

Klingt ja bedrohlich, aber es ist wirklich Möglich R und Python sinnvoll zu kombinieren. Nicht nur in den Anwendungen, sondern auch beim Erstellen von Skripten mit R markdown.

Zu Beginn des letzten Semesters hatte ich die Idee in der Vorlesung “Mathematischen Grundlagen der Wirtschaftsinformatik” ein paar der Begriffe der Mengenlehre denen daraus abgeleiteten Begriffen der abstrakten Datentypen gegenüberzustellen. So gibt es die Idee der Menge u.a. in Python als set.

Wie aber kann man solche Python-Fragmente in ein R markdown Sktipr einbauen? - Kann man R markdown überhaupt mit Python zusammen bringen? - Ein wenig suchen im Internet und ein paar Stunden später hatte ich es geschaft. Dank einer Netzpython…

Die Netzpython als Bindeglied zwischen R und Python

Eine Netzpython (engl. reticulated python) stand Pate für den Namen des R Paketes reticulate, welches R und Python miteinander verbindet. So ist es möglich Python-Befehle direkt in ein R markdown Skript ausführen zulassen, diese Fragmente adequat durchzustellen – ganz wie R Skripte – und sogar Daten zwoschen R und Python hin und her (aus) zu tauschen.

Nach der Installation mittels

install.packages("reticulate")

bedarf es aber durch aus noch einiger Anpassungen, bis alles zur Zufriedenheit funktioniert.

Standardmässig sucht die Netzpython nach ihrem Gefährten mit der Hilfe des Befehls Sys.which("python"), welcher bei mir leider zu einer vollkommen alten, aber noch benutzen, Python Version führte. Möchte man eine ganz bestimmte Python Version haben, so hilft einem der Befehl use_python():

library(reticulate)
use_python("/usr/local/bin/python")  # Pfad zum Python-Befehl der benutz werden soll.

Es werden auch virtuelle Umgebungen unterstützt:

library(reticulate)
use_virtualenv("myenv")

Und auch eine ganz andere Schlangenart kann benutzt werden, Anacondas:

library(reticulate)
use_condaenv("mycondaenv")

Der Einbau in ein R markdown Dokument

Einen Python Quellcode in ein R markdown einzubauen ist dann wieder sehr einfach. Man ändert einfach ein r in python im Codeblock und schon steht einem der knitr-Chunk als Python Quelle zur Verfügung.

Sp liefert der knitr-Chunk
```{python}
# Etwas Python gefällig?
def quadrat(x):
    return x**2
    
print(quadrat(2))
```

in einem R markdown, dann die Ausgabe:

# Etwas Python geföllig?
def quadrat(x):
    return x**2
    
print(quadrat(2))
## 4

Das war es aber noch lange nicht. R und Python können nämlich nicht nur nebeneinander, sondern auch miteinander!

Dazu dann aber mehr in einem späteren Blog-Eintrag.

Norman Markgraf
Norman Markgraf
Diplom-Mathematiker

Norman Markgraf ist freiberuflicher Dozent für Mathematik, Statistik, Data Science und Informatik, sowie freiberuflicher Programmierer.

Ähnliches