?? Reticulate | 如何在Rstudio中優(yōu)雅地調(diào)用Python???

寫在前面

最近遇到一個大名鼎鼎的包叫Scanpy,用于單細(xì)胞測序的分析,不過需要在Python中運行。??
于是,我就研究了一下如何在Rstudio中調(diào)用這個神包。 ??

這里和大家分享一下如何在Rstudio中調(diào)用python吧。??

安裝Python

2.1 方法一

你可以選擇在官網(wǎng)直接下載安裝,地址如下:
https://www.python.org/downloads/ , 按照自己的操作系統(tǒng)下載即可。??

隨后再配置環(huán)境。??

2.2 方法二(推薦)

我們輸入以下代碼,如果是從來沒有進(jìn)行過操作的,Rstudio會默認(rèn)下載 Miniconda來進(jìn)行環(huán)境搭建及的管理。??
由于我這里已經(jīng)安裝過了,所以不會提示再次安裝。

reticulate::repl_python()

有時候你只是不知道自己的python在哪里,那你可以這樣做來獲取路徑。??

Sys.which("python")

配置Python環(huán)境

3.1 安裝并加載相關(guān)包

接著我們需要安裝兩個包,來幫助調(diào)用Python。??

## 安裝
install.packages("reticulate")
install.packages("Rcpp")
## 加載
rm(list = ls())
library(reticulate)

3.1 配置環(huán)境

1?? 方法一

這里可以需要輸入你的pthon路徑(指定使用版本)。??

Sys.setenv(RETICULATE_PYTHON = ".")

如果你要通過代碼配置virtual 或者 Conda環(huán)境中的python,可以這樣??:

use_virtualenv(".")
use_condaenv(".") 

2?? 方法二

你也可以選擇在設(shè)置里配置python環(huán)境。??



3.2 測試環(huán)境

我們看一下我們python是否安裝好了。??

py_available()

3.3 安裝python上的包

這里我們以pandas為例,不做過多介紹啦。??

reticulate::py_install("pandas")

Rstudio中調(diào)用python包

這里我們用python常用的一個畫圖包,matplotlib為例,先安裝一下吧。

reticulate::py_install("matplotlib")

4.1 方法一

Python Script中調(diào)用python功能。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

data = {'a': np.arange(50),
        'c': np.random.randint(0, 50, 50),
        'd': np.random.randn(50)}
data['b'] = data['a'] + 10 * np.random.randn(50)
data['d'] = np.abs(data['d']) * 100

plt.scatter('a', 'b', c='c', s='d', data=data)
plt.xlabel('entry a')
plt.ylabel('entry b')
plt.show()

4.2 方法二(推薦)

R markdown搞定一切,你也可以像我這樣,將這個代碼框設(shè)置為python環(huán)境,則會直接按python語言進(jìn)行識別。??

```{python}
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

data = {'a': np.arange(50),
        'c': np.random.randint(0, 50, 50),
        'd': np.random.randn(50)}
data['b'] = data['a'] + 10 * np.random.randn(50)
data['d'] = np.abs(data['d']) * 100

plt.scatter('a', 'b', c='c', s='d', data=data)
plt.xlabel('entry a')
plt.ylabel('entry b')
plt.show()
```

使用Python Script

有時候你寫好了一個Python Script,然后你想在Rstudio中調(diào)用,可以這樣。??
1?? 假設(shè)我們在python環(huán)境下寫了一個Python Script,名為flights.py。??

import pandas
def read_flights(file):
  flights = pandas.read_csv(file)
  flights = flights[flights['dest'] == "ORD"]
  flights = flights[['carrier', 'dep_delay', 'arr_delay']]
  flights = flights.dropna()
  return flights

2?? 接著我們就可以在R中使用source_python,調(diào)用我們事先寫好的這個Python Script了。??

source_python("flights.py")
flights <- read_flights("flights.csv")

library(ggplot2)
ggplot(flights, aes(carrier, arr_delay)) + geom_point() + geom_jitter()

<img src="https://upload-images.jianshu.io/upload_images/24475539-e3b3175c3006227a.png" alt="雞蛋" style="zoom:25%;" />

<center>最后祝大家早日不卷!~</center>


點個在看吧各位~ ?.???? ??? ?

本文由mdnice多平臺發(fā)布

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容