Programování

Jak spustit Python v R.

Stejně jako já miluji R, je jasné, že Python je také skvělý jazyk - jak pro datovou vědu, tak pro všeobecné účely. A mohou existovat dobré důvody, proč by uživatel R chtěl dělat nějaké věci v Pythonu. Možná je to skvělá knihovna, která ještě nemá ekvivalent R (zatím). Nebo API, ke kterému chcete přistupovat, které má ukázkový kód v Pythonu, ale ne R.

Díky balíčku R reticulate můžete spustit kód Pythonu přímo ve skriptu R - a předávat data tam a zpět mezi Pythonem a R.

Kromě síťování potřebujete ve svém systému nainstalovaný Python. Potřebujete také jakékoli moduly, balíčky a soubory Pythonu, na kterých závisí váš kód Pythonu.

Pokud chcete pokračovat, nainstalujte a načtěte síťovou síť sinstall.packages ("reticulate") a knihovna (síťovaná).

Abychom to zjednodušili, začněme pouhými dvěma řádky kódu Pythonu, abychom importovali balíček NumPy pro základní vědecké výpočty a vytvořili pole čtyř čísel. Kód Pythonu vypadá takto:

importovat numpy jako np

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

A tady je jeden způsob, jak to udělat přímo ve skriptu R.

py_run_string ("importovat numpy jako np")

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

The py_run_string () funkce provede libovolný kód Pythonu v závorce a uvozovkách.

Pokud spustíte tento kód v R, může to vypadat, že se nic nestalo. Ve vašem podokně prostředí RStudio se nic nezobrazí a nevrátí se žádná hodnota. Pokud běžíte print (my_python_array) v R se zobrazí chyba, že my_python_array neexistuje.

Ale pokud spustíte aKrajta příkaz tisku uvnitř py_run_string () funkce jako

py_run_string ("pro položku v my_python_array: print (položka)")

měli byste vidět výsledek.

Bude to otravné běh kódu Pythonu po řádcích, jako je tento, pokud máte více než pár řádků kódu. Existuje tedy několik dalších způsobů, jak spustit Python v R a síťovat.

Jedním z nich je vložit celý kód Pythonu do běžného souboru .py a použít py_run_file () funkce. Dalším způsobem, který se mi líbí, je použití dokumentu R Markdown.

R Markdown umožňuje kombinovat text, kód, výsledky kódu a vizualizace v jednom dokumentu. Můžete vytvořit nový dokument R Markdown v RStudio výběrem Soubor> Nový soubor> R Markdown.

Kusy kódu začínají třemi zpětnými tahy (```) a končí třemi zpětnými tahy a ve výchozím nastavení mají v RStudiu šedé pozadí.

Tento první kus je pro R kód - to vidíte na r po otevíracím držáku. Načte balíček mřížky a poté určíte verzi Pythonu, kterou chcete použít. (Pokud nezadáte, použije se výchozí nastavení vašeho systému.)

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

knihovna (síťovaná)

use_python ("/ usr / bin / python")

```

Tento druhý blok níže je určen pro kód Pythonu. Python můžete zadat jako do souboru Pythonu. Níže uvedený kód importuje NumPy, vytvoří pole a pole vytiskne.

`` {python}

importovat numpy jako np

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

pro položku v my_python_array:

tisk (položka)

```

Tady je skvělá část: Toto pole v R můžete použít odkazem na py $ my_python_array (obecně, py $ objectname).

V tomto dalším bloku kódu ukládám toto pole Pythonu do volané proměnné R. my_r_array. A pak zkontroluji třídu tohoto pole.

`` {r}

my_r_array <- py $ my_python_array

třída (my_r_array)

``

Je to třída „pole“, což není přesně to, co byste od takového objektu R očekávali. Ale můžu to proměnit v běžný vektor s as.vector (my_r_array) a spusťte na něm jakékoli operace R, které bych chtěl, například vynásobení každé položky 2.

`` {r}

my_r_vector <- as.vector (py $ my_python_array)

třída (my_r_vector)

my_r_vector <- my_r_vector * 2

```

Další skvělá část: Tuto proměnnou R mohu použít zpět v Pythonu, as r.my_r_array (obecněji, r. variablename), jako

`` {python}

my_python_array2 = r.my_r_vector

print (my_python_array2)

```

Pokud byste chtěli vidět, jak to vypadá bez nastavení Pythonu ve vašem systému, podívejte se na video v horní části tohoto příběhu.