寫在前面
最近遇到一個大名鼎鼎的包叫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ā)布