Kako pokrenuti Python u R

Koliko god volim R, jasno je da je Python također izvrstan jezik - kako za znanost o podacima, tako i za računalstvo opće namjene. I mogu postojati dobri razlozi zbog kojih bi korisnik R želio raditi neke stvari u Pythonu. Možda je to izvrsna knjižnica koja nema R ekvivalent (još). Ili API kojem želite pristupiti koji ima uzorak koda u Pythonu, ali ne i R.

Zahvaljujući R reticulate paketu, možete pokrenuti Python kôd točno unutar R skripte - i prosljeđivati ​​podatke naprijed-natrag između Pythona i R.

Uz mrežasti, potreban vam je i Python instaliran na vašem sustavu. Također su vam potrebni bilo koji Python moduli, paketi i datoteke o kojima ovisi vaš Python kôd.

Ako želite slijediti, instalirajte i učitajte mrežnu mrežu pomoću  install.packages("reticulate")i library(reticulate).

Da stvari budu jednostavne, započnimo sa samo dva retka Python koda za uvoz paketa NumPy za osnovno znanstveno računanje i stvorimo niz od četiri broja. Python kod izgleda ovako:

uvoz numpy kao np

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

I evo jednog načina da se to učini ispravno u R skripti:

py_run_string ("uvezi numpy kao np")

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

Na py_run_string()funkcija izvršava ono Python koda unutar zagrada i navodnicima. 

Ako taj kôd pokrenete u R-u, može izgledati kao da se ništa nije dogodilo. Ništa se ne prikazuje u oknu vašeg okruženja RStudio i ne vraća se vrijednost. Ako pokrenete print(my_python_array)u R, dobit ćete pogrešku koja my_python_arrayne postoji.

Ali ako pokrenete  Python  naredbu za ispis unutar py_run_string()funkcije kao što je 

py_run_string ("za stavku u my_python_array: print (item)")

trebali biste vidjeti rezultat. 

Međutim, postat će dosadno izvoditi Python kôd po redak poput ovog, ako imate više od nekoliko redaka koda. Postoji nekoliko drugih načina za pokretanje Pythona u R-u i mrežnu mrežu.

Jedno je staviti sav Python kôd u redovnu .py datoteku i koristiti py_run_file()funkciju. Još jedan način koji volim je korištenje R Markdown dokumenta. 

R Markdown omogućuje vam kombiniranje teksta, koda, rezultata koda i vizualizacija u jednom dokumentu. Možete stvoriti novi R Markdown dokument u RStudio odabirom File> New File> R Markdown.

Komadi koda započinju s tri povratna znaka ( ```) i završavaju s tri povratna znaka, a u RStudiou imaju zadanu sivu pozadinu.

Ovaj prvi dio je za R kod - to možete vidjeti sa zagradom rnakon otvaranja. Učitava mrežasti paket i tada odredite verziju Pythona koju želite koristiti. (Ako ne navedete, upotrebljavat će zadani sustav.)

```{r setup, include=FALSE, echo=TRUE}

library(reticulate)

use_python("/usr/bin/python")

```

Ovaj drugi dio u nastavku odnosi se na Python kôd. Možete upisati Python kao što biste to učinili u datoteci Python. Kod ispod uvozi NumPy, stvara niz i ispisuje niz.

`` `{python}

uvoz numpy kao np

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

za stavku u my_python_array:

ispis (stavka)

``

Evo cool dijela: Taj niz možete koristiti u R tako što ćete ga nazvati py$my_python_array(općenito, py$objectname).

U sljedećem dijelu koda, taj Python niz pohranjujem u R varijablu koja se zove my_r_array. A onda provjerim klasu tog niza.

`` `{r}

my_r_array <- py $ my_python_array

razred (my_r_array)

``

To je "niz" klase, što nije baš ono što biste očekivali za ovakav R objekt. Ali mogu ga pretvoriti u redoviti vektor as.vector(my_r_array)i pokretati sve R operacije koje bih želio, poput množenja svake stavke s 2. 

`` `{r}

my_r_vector <- as.vector (py $ my_python_array)

klasa (moj_r_vektor)

my_r_vector <- my_r_vector * 2

``

Sljedeći cool dio: Mogu koristiti tu R varijablu natrag u Pythonu, kao r.my_r_array(općenito, r.variablename), kao što je 

`` `{python}

my_python_array2 = r.my_r_vector

ispis (my_python_array2)

``

Ako želite vidjeti kako ovo izgleda bez postavljanja Pythona na vašem sustavu, pogledajte video na vrhu ove priče.