Programavimas

Kaip paleisti „Python“ R

Kad ir kaip aš myliu R, akivaizdu, kad „Python“ taip pat yra puiki kalba - tiek duomenų mokslui, tiek bendros paskirties kompiuteriams. Ir gali būti rimtų priežasčių, kodėl R vartotojas norėtų atlikti kai kuriuos veiksmus „Python“. Gal tai puiki biblioteka, kuri neturi atitikmens R (dar). Arba API, kurią norite pasiekti, kurios pavyzdinis kodas yra „Python“, bet ne R.

Dėl „R reticulate“ paketo galite paleisti „Python“ kodą tiesiai per R scenarijų ir perduoti duomenis pirmyn ir atgal tarp „Python“ ir „R“.

Be tinklelio, jūsų sistemoje reikia įdiegti „Python“. Jums taip pat reikalingi visi „Python“ moduliai, paketai ir failai, nuo kurių priklauso jūsų „Python“ kodas.

Jei norite sekti paskui, įdiekite ir įkelkite tinklelį suinstall.packages („reticulate“) ir biblioteka (tinklas).

Kad viskas būtų paprasta, pradėkime tik nuo dviejų „Python“ kodo eilučių, kad importuotumėte „NumPy“ paketą, skirtą pagrindiniam moksliniam skaičiavimui, ir sukurkite keturių skaičių masyvą. „Python“ kodas atrodo taip:

importuoti numerį kaip np

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

Štai vienas iš būdų tai padaryti teisingai naudojant „R“ scenarijų:

py_run_string ("importuoti numerį kaip np")

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

py_run_string () funkcija vykdo bet kokį Python kodą skliausteliuose ir kabutėse.

Jei paleisite šį kodą R, gali atrodyti, kad nieko neįvyko. „RStudio“ aplinkos srityje nieko nerodo ir jokia vertė negrąžinama. Jei bėgsi spausdinti (my_python_array) R, jūs gaunate klaidą my_python_array neegzistuoja.

Bet jei paleisite a„Python“ spausdinimo komandą py_run_string () funkcija, tokia kaip

py_run_string ("elementui my_python_array: print (elementas)")

turėtumėte pamatyti rezultatą.

Vis dėlto bus nemalonu paleisti „Python“ kodą eilutėmis po eilutes, jei turite daugiau nei porą kodo eilučių. Taigi yra keletas kitų būdų, kaip paleisti „Python“ R ir tinklelį.

Vienas iš jų yra įdėti visą „Python“ kodą į įprastą .py failą ir naudoti py_run_file () funkcija. Kitas man patinkantis būdas yra naudoti „R Markdown“ dokumentą.

„R Markdown“ leidžia sujungti tekstą, kodą, kodo rezultatus ir vizualizacijas viename dokumente. „RStudio“ galite sukurti naują „R Markdown“ dokumentą pasirinkdami Failas> Naujas failas> R žymėjimas.

Kodo gabalai prasideda trimis užpakaliniais ženklais (```) ir baigiasi trimis mygtukais, o pagal numatytuosius nustatymus jie „RStudio“ turi pilką foną.

Šis pirmasis gabalas skirtas R kodui - tai galite pamatyti naudodami r po atidarymo laikikliu. Jis įkelia tinklinį paketą ir tada nurodote norimą naudoti „Python“ versiją. (Jei nenurodysite, ji naudos jūsų numatytąją sistemą.)

„{r sąranka, įtraukite = FALSE, echo = TRUE}

biblioteka (tinklas)

use_python ("/ usr / bin / python")

```

Ši antroji dalis žemiau skirta „Python“ kodui. Galite įvesti „Python“ kaip ir „Python“ faile. Žemiau pateiktas kodas importuoja „NumPy“, sukuria masyvą ir išspausdina masyvą.

„{python}

importuoti numerį kaip np

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

elementui „my_python_array“:

spausdinti (prekė)

```

Štai šaunioji dalis: Jūs galite naudoti tą masyvą R, nurodydami jį kaip py $ my_python_array (apskritai, py $ objekto vardas).

Šioje kitoje kodo dalyje aš saugau tą „Python“ masyvą R kintamajame, vadinamame my_r_array. Ir tada aš patikrinu to masyvo klasę.

„{r}

my_r_array <- py $ my_python_array

klasė (my_r_array)

``

Tai klasės „masyvas“, kuris nėra visai tas, ko tikėjotės iš tokio R objekto. Bet aš galiu paversti jį įprastu vektoriu su as.vector (my_r_array) ir atlikite visas norimas R operacijas, pvz., padauginkite kiekvieną elementą iš 2.

„{r}

my_r_vector <- as.vector (py $ my_python_array)

klasė (my_r_vector)

my_r_vector <- my_r_vector * 2

```

Kita šauni dalis: Aš galiu naudoti tą R kintamąjį „Python“, kaip r.my_r_array (Plačiau, r.variablename), toks kaip

„{python}

my_python_array2 = r.my_r_vector

spausdinti (my_python_array2)

```

Jei norite pamatyti, kaip tai atrodo, nenustatę „Python“ savo sistemoje, peržiūrėkite vaizdo įrašą šios istorijos viršuje.

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