Bagaimana menjalankan Python di R

Meskipun saya menyukai R, jelas bahwa Python juga merupakan bahasa yang bagus — baik untuk ilmu data dan komputasi tujuan umum. Dan mungkin ada alasan bagus mengapa pengguna R ingin melakukan beberapa hal dengan Python. Mungkin itu perpustakaan hebat yang belum memiliki setara R (belum). Atau API yang ingin Anda akses yang memiliki kode sampel dengan Python tetapi tidak R.

Berkat paket R reticulate, Anda dapat menjalankan kode Python langsung di dalam skrip R — dan meneruskan data bolak-balik antara Python dan R.

Selain reticulate, Anda perlu Python diinstal di sistem Anda. Anda juga memerlukan modul, paket, dan file Python apa pun yang menjadi tempat bergantung kode Python Anda.

Jika Anda ingin mengikuti, instal dan muat reticulate dengan  install.packages("reticulate")dan library(reticulate).

Untuk mempermudah, mari kita mulai dengan hanya dua baris kode Python untuk mengimpor paket NumPy untuk komputasi ilmiah dasar dan membuat array empat angka. Kode Python terlihat seperti ini:

impor numpy sebagai np

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

Dan inilah salah satu cara untuk melakukannya dengan benar di skrip R:

py_run_string ("import numpy as np")

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

The py_run_string()mengeksekusi fungsi Python apapun kode dalam kurung dan tanda kutip. 

Jika Anda menjalankan kode tersebut di R, sepertinya tidak ada yang terjadi. Tidak ada yang muncul di panel lingkungan RStudio Anda, dan tidak ada nilai yang dikembalikan. Jika Anda menjalankan print(my_python_array)di R, Anda mendapatkan kesalahan yang my_python_arraytidak ada.

Tetapi jika Anda menjalankan   perintah cetak Python di dalam py_run_string()fungsi seperti 

py_run_string ("untuk item di my_python_array: print (item)")

Anda akan melihat hasilnya. 

Ini akan menjengkelkan menjalankan kode Python baris demi baris seperti ini, jika Anda memiliki lebih dari beberapa baris kode. Jadi ada beberapa cara lain untuk menjalankan Python di R dan reticulate.

Salah satunya adalah dengan meletakkan semua kode Python dalam file .py biasa, dan menggunakan py_run_file()fungsinya. Cara lain yang saya suka adalah dengan menggunakan dokumen R Markdown. 

R Markdown memungkinkan Anda menggabungkan teks, kode, hasil kode, dan visualisasi dalam satu dokumen. Anda dapat membuat dokumen R Markdown baru di RStudio dengan memilih File> New File> R Markdown.

Potongan kode dimulai dengan tiga backticks ( ```) dan diakhiri dengan tiga backticks, dan mereka memiliki latar belakang abu-abu secara default di RStudio.

Potongan pertama ini adalah untuk kode R — Anda dapat melihatnya dengan tanda rkurung tutup setelahnya. Ini memuat paket reticulate dan kemudian Anda menentukan versi Python yang ingin Anda gunakan. (Jika Anda tidak menentukannya, ini akan menggunakan default sistem Anda.)

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

library(reticulate)

use_python("/usr/bin/python")

```

Bagian kedua di bawah ini adalah untuk kode Python. Anda dapat mengetikkan Python seperti yang Anda lakukan pada file Python. Kode di bawah ini mengimpor NumPy, membuat array, dan mencetak array.

`` `{python}

impor numpy sebagai np

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

untuk item di my_python_array:

cetak (item)

``

Inilah bagian yang keren: Anda dapat menggunakan array itu di R dengan merujuknya sebagai py$my_python_array(secara umum, py$objectname).

Dalam potongan kode berikutnya ini, saya menyimpan array Python itu dalam variabel R yang disebut my_r_array. Dan kemudian saya memeriksa kelas array itu.

`` `{r}

my_r_array <- py $ my_python_array

kelas (my_r_array)

``

Ini adalah kelas "array," yang tidak persis seperti yang Anda harapkan untuk objek R seperti ini. Tetapi saya dapat mengubahnya menjadi vektor biasa as.vector(my_r_array)dan menjalankan operasi R apa pun yang saya inginkan, seperti mengalikan setiap item dengan 2. 

`` `{r}

my_r_vector <- as.vector (py $ my_python_array)

kelas (my_r_vector)

my_r_vector <- my_r_vector * 2

``

Bagian keren berikutnya: Saya dapat menggunakan variabel R itu kembali dengan Python, seperti r.my_r_array(lebih umum, r.variablename), seperti 

`` `{python}

my_python_array2 = r.my_r_vector

cetak (my_python_array2)

``

Jika Anda ingin melihat seperti apa ini tanpa menyiapkan Python di sistem Anda, lihat video di bagian atas cerita ini.