Ohjelmointi

Kuinka ajaa Python R: ssä

Niin paljon kuin rakastan R: tä, on selvää, että Python on myös hieno kieli - sekä tietojenkäsittelyyn että yleiskäyttöön. Ja voi olla hyviä syitä, miksi R-käyttäjä haluaa tehdä joitain asioita Pythonissa. Ehkä se on loistava kirjasto, jolla ei vielä ole R-vastaavuutta. Tai API, jota haluat käyttää ja jolla on esimerkkikoodi Pythonissa, mutta ei R.

R reticulate -paketin ansiosta voit suorittaa Python-koodin suoraan R-komentosarjassa - ja siirtää tietoja edestakaisin Pythonin ja R: n välillä.

Retikuloinnin lisäksi järjestelmään on asennettava Python. Tarvitset myös kaikki Python-moduulit, paketit ja tiedostot, joista Python-koodi riippuu.

Jos haluat seurata mukana, asenna ja lataa verkkoinstall.packages ("reticulate") ja kirjasto (verkko).

Jotta asiat pysyisivät yksinkertaisina, aloitetaan vain kahdella Python-koodirivillä, jotta tuodaan NumPy-paketti tieteelliseen perustietojenkäsittelyyn ja luodaan taulukko neljästä numerosta. Python-koodi näyttää tältä:

tuo numerotunnus nimellä np

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

Ja tässä on yksi tapa tehdä se oikein R-komentosarjassa:

py_run_string ("tuoda numpy nimellä np")

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

py_run_string () function suorittaa minkä tahansa Python-koodin sulkeissa ja lainausmerkeissä.

Jos suoritat kyseisen koodin R: ssä, se ei ehkä näytä tapahtuneen mitään. Mikään ei näy RStudio-ympäristöruudussa, eikä arvoa palauteta. Jos juokset tulosta (my_python_array) R: ssä saat virheilmoituksen my_python_array ei ole olemassa.

Mutta jos suoritat aPython Tulosta komento py_run_string () toiminto kuten

py_run_string ("kohteelle my_python_array: print (item)")

sinun pitäisi nähdä tulos.

Tällaisesta Python-koodin ajamisesta rivi kerrallaan tulee kuitenkin ärsyttävää, jos sinulla on enemmän kuin pari koodiriviä. Joten on olemassa muutamia muita tapoja suorittaa Python R: ssä ja verkottaa.

Yksi on laittaa kaikki Python-koodi tavalliseen .py-tiedostoon ja käyttää py_run_file () toiminto. Toinen tapa, josta pidän, on käyttää R Markdown -asiakirjaa.

R Markdown antaa sinun yhdistää tekstiä, koodia, koodituloksia ja visualisointeja yhteen asiakirjaan. Voit luoda uuden R Markdown -asiakirjan RStudiossa valitsemalla Tiedosto> Uusi tiedosto> R Markdown.

Koodipalat alkavat kolmella taaksepäin (```) ja päättyvät kolmeen taaksepäin, ja niillä on oletusarvoisesti harmaa tausta RStudiossa.

Tämä ensimmäinen osa on R-koodia varten - voit nähdä sen r avainkannattimen jälkeen. Se lataa verkkopaketin ja määrität sitten haluamasi Python-version. (Jos et määritä, se käyttää järjestelmän oletusta.)

`` {r setup, include = EPÄTOSI, kaiku = TOSI}

kirjasto (verkko)

use_python ("/ usr / bin / python")

```

Tämä alla oleva toinen osa on tarkoitettu Python-koodille. Voit kirjoittaa Pythonin samalla tavalla kuin Python-tiedostoon. Alla oleva koodi tuo NumPyn, luo matriisin ja tulostaa matriisin.

`` {python}

tuo numerotunnus nimellä np

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

kohteelle my_python_array:

tulosta (kohde)

```

Tässä on hieno osa: Voit käyttää kyseistä taulukkoa R: ssä viittaamalla siihen nimellä py $ my_python_array (yleisesti, py $ objektinimi).

Tähän seuraavaan koodinpalaan tallennan kyseisen Python-taulukon R-muuttujaan nimeltä my_r_array. Ja sitten tarkistan kyseisen ryhmän luokan.

`` {r}

my_r_array <- py $ my_python_array

luokka (my_r_array)

``

Se on luokan "matriisi", jota ei voida odottaa tällaiselle R-objektille. Mutta voin tehdä siitä tavallisen vektorin as.vector (my_r_array) ja suorita haluamasi R-toiminnot, kuten kertomalla kukin alkio kahdella.

`` {r}

my_r_vector <- as.vector (py $ my_python_array)

luokka (my_r_vector)

my_r_vector <- my_r_vector * 2

```

Seuraava viileä osa: Voin käyttää R-muuttujaa takaisin Pythonissa, kuten r.my_r_array (yleisemmin, r. muuttujanimi), kuten

`` {python}

my_python_array2 = r.my_r_vector

tulosta (my_python_array2)

```

Jos haluat nähdä miltä tämä näyttää asettamatta Pythonia järjestelmään, tutustu tämän tarinan yläosassa olevaan videoon.

$config[zx-auto] not found$config[zx-overlay] not found