Programiranje

Kako zagnati Python v R

Kolikor mi je všeč R, je jasno, da je tudi Python odličen jezik - tako za podatkovne vede kot za računalništvo za splošne namene. In obstajajo lahko dobri razlogi, da bi uporabnik R želel nekaj stvari narediti v Pythonu. Mogoče je to odlična knjižnica, ki nima R-ekvivalenta (še). Ali API, do katerega želite dostopati, ki ima vzorčno kodo v Pythonu, ne pa tudi R.

Zahvaljujoč paketu R reticulate lahko zaženete kodo Python kar znotraj skripta R - in med Pythonom in R. posredujete podatke naprej in nazaj.

Poleg tega, da potrebujete Python, nameščen v vašem sistemu. Potrebujete tudi vse module, pakete in datoteke Python, od katerih je odvisna vaša koda Python.

Če želite nadaljevati, namestite in naložite mrežico zinstall.packages ("mrežasti") in knjižnica (mrežasta).

Da bodo stvari poenostavljene, začnimo s samo dvema vrsticama kode Python, da uvozimo paket NumPy za osnovno znanstveno računalništvo in ustvarimo matriko štirih števil. Koda Python je videti tako:

uvozi numpy kot np

my_python_array = np.array ([2,4,6,8])

In tukaj je en način, da to pravilno naredimo v R skriptu:

py_run_string ("uvozi numpy kot np")

py_run_string ("my_python_array = np.array ([2,4,6,8])")

The py_run_string () funkcija izvrši katero koli kodo Python v oklepajih in narekovajih.

Če zaženete to kodo v R, se zdi, da se ni zgodilo nič. V podoknu okolja RStudio se nič ne prikaže in nobena vrednost ni vrnjena. Če tečeš natisni (my_python_array) v R, dobite napako, ki my_python_array ne obstaja.

Če pa zaženetePython ukaz za tiskanje znotraj py_run_string () funkcija, kot je

py_run_string ("za element v my_python_array: print (item)")

videli bi rezultat.

Če boste imeli več kot nekaj vrstic kode, bo postajalo nadležno izvajanje Pythonove kode po vrsticah, kot je ta. Torej obstaja še nekaj drugih načinov za zagon Pythona v R in mrežico.

Eno je, da vso Pythonovo kodo shranite v običajno datoteko .py in uporabite datoteko py_run_file () funkcijo. Drug način, ki mi je všeč, je uporaba dokumenta R Markdown.

R Markdown vam omogoča kombiniranje besedila, kode, rezultatov kode in vizualizacij v enem dokumentu. Nov dokument R Markdown lahko ustvarite v RStudio, tako da izberete File> New File> R Markdown.

Kosi kode se začnejo s tremi povratnimi znaki (```) in se končajo s tremi povratnimi znaki, v RStudio pa imajo privzeto sivo ozadje.

Ta prvi del je za kodo R - to lahko vidite pri r po odpiralnem nosilcu. Naloži mrežni paket in nato določite različico Pythona, ki jo želite uporabiti. (Če ne navedete, bo uporabil privzeti sistem.)

`` {r nastavitev, vključi = FALSE, odmev = TRUE}

knjižnica (mrežasta)

use_python ("/ usr / bin / python")

```

Ta drugi del spodaj je namenjen kodi Python. Python lahko vtipkate, kot bi to storili v datoteki Python. Spodnja koda uvozi NumPy, ustvari matriko in matriko natisne.

"" {python}

uvozi numpy kot np

my_python_array = np.array ([2,4,6,8])

za element v my_python_array:

natisni (artikel)

```

Tu je kul del: to matriko lahko uporabite v R, tako da jo označite kot py $ my_python_array (na splošno, py $ ime predmeta).

V tem naslednjem delu kode shranim to matriko Python v imenovano spremenljivko R. my_r_array. In potem preverim razred tega polja.

"" {r}

my_r_array <- py $ my_python_array

razred (my_r_array)

``

Gre za "matriko" razreda, kar ni ravno tisto, kar bi pričakovali za tak objekt R. Lahko pa ga spremenim v navadni vektor z as.vector (my_r_array) in zaženite vse R operacije, ki jih želim, na primer pomnožite vsak element z 2.

"" {r}

my_r_vector <- as.vector (py $ my_python_array)

razred (my_r_vector)

my_r_vector <- my_r_vector * 2

```

Naslednji kul del: To spremenljivko R lahko uporabim nazaj v Pythonu, kot r.my_r_array (bolj splošno, r.variablename), kot naprimer

"" {python}

my_python_array2 = r.my_r_vector

tiskanje (my_python_array2)

```

Če bi radi videli, kako je to videti, ne da bi v vašem sistemu nastavili Python, si oglejte video na vrhu te zgodbe.