/ / Konvertovať Python na R - python, r

Previesť Python na R - python, r

Viem, že existuje modul (rpy a rpy2) na konverziu R kódu na Python.

Existuje nejaký jednoduchý spôsob, ako to urobiť opačne?

odpovede:

13 pre odpoveď č. 1

rpy (2) neprevedie kód. To vám umožní len rozhranie pre komunikáciu s R z pythonu a vydávanie príkazov R z pythonu.

Vzhľadom k tomu, že R je veľmi závislá na štatistických knižniciach, ktoré nie sú dostupné v pythone, konverzia by vo všeobecnosti predstavovala obrovské množstvo práce.

lmer (y ~ x1 + x1 + (1|id), mydat)

k niečomu v pythone by to trvalo veľapráca. Ak chcete spustiť tento kód z pythonu, použite rpy. Ak pôjdete na druhú stranu, čo sa zdá byť viac ako to, čo vás zaujíma, konverzia by mohla byť často o niečo jednoduchšia. Avšak, kód by mal tendenciu byť veľmi zle optimalizované pre R a beží veľmi zle. Nedávno som optimalizoval nejaký R kód z pythonu na niekoho, kto napísal R kód ako viac či menej priamy preklad po riadkoch. Optimalizácia vyšla 1/3 dĺžky a 20 až 1000 krát rýchlejšie (v závislosti od funkcie).


4 pre odpoveď č. 2

John je správny. Nejedná sa o konverziu medzi jazykmi, ale o rozhrania jazykov. Jazyková konverzia nie je obzvlášť bežná, hoci je prepojená. Avšak, konverzia objektu je pomerne bežná, pretože je to dôležitá súčasť jazykov rozhrania.

Okrem Rpy a Rpy2 sa pozrite RSPython, To tiež umožňuje konverziu objektu, a inšpiroval Rpy.


4 pre odpoveď č. 3

Ak je Python ako východiskový bod prijateľný, rpy2 umožňuje prejsť oboma smermi medzi R a Python: pri vykonávaní R kódu môžete volať kód Python (doc tu).


1 pre odpoveď č. 4

s PypeR môžete ísť oboma smermi veľmi ľahko: z R do Python az Pythonu na R. http://www.webarray.org/softwares/PypeR/

funguje to skvele a tento článok popisuje, ako to funguje a výhody oproti alternatívam (rpy, rpy2 atď.)

http://www.jstatsoft.org/v35/c02/paper

Osobne som ho použil na spustenie modelov stat v R z pythonu a na import / export dátových rámov z jednej cesty na druhú (a konvertovanie numpy rámcov na r-dataframes a viceversa).