写在前面
最近遇到一个大名鼎鼎的包叫Scanpy
,用于单细胞测序
的分析,不过需要在Python
中运行。🫠
于是,我就研究了一下如何在Rstudio
中调用这个神包。 👀
这里和大家分享一下如何在Rstudio
中调用python
吧。🥰
安装Python
2.1 方法一
你可以选择在官网直接下载安装,地址如下:
https://www.python.org/downloads/
, 按照自己的操作系统下载即可。🤨
随后再配置环境。😁

2.2 方法二(推荐)
我们输入以下代码,如果是从来没有进行过操作的,Rstudio
会默认下载 Miniconda
来进行环境搭建及包的管理。🌟
由于我这里已经安装过了,所以不会提示再次安装。
reticulate::repl_python()
有时候你只是不知道自己的python
在哪里,那你可以这样做来获取路径。👇
Sys.which("python")
配置Python环境
3.1 安装并加载相关包
接着我们需要安装两个包,来帮助调用Python
。😘
## 安装
install.packages("reticulate")
install.packages("Rcpp")
## 加载
rm(list = ls())
library(reticulate)
3.1 配置环境
1️⃣ 方法一
这里可以需要输入你的pthon
路径(指定使用版本)。😉
Sys.setenv(RETICULATE_PYTHON = ".")
如果你要通过代码配置virtual
或者 Conda
环境中的python
,可以这样👇:
use_virtualenv(".")
use_condaenv(".")
2️⃣ 方法二
你也可以选择在设置里配置python
环境。🤩


3.2 测试环境
我们看一下我们python
是否安装好了。👀
py_available()

3.3 安装python上的包
这里我们以pandas
为例,不做过多介绍啦。🐶
reticulate::py_install("pandas")
Rstudio中调用python包
这里我们用python
常用的一个画图包,matplotlib
为例,先安装一下吧。
reticulate::py_install("matplotlib")
4.1 方法一
在Python Script
中调用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
搞定一切,你也可以像我这样,将这个代码框设置为python
环境,则会直接按python
语言进行识别。🥰
```{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
中调用,可以这样。👇
1️⃣ 假设我们在python
环境下写了一个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
,调用我们事先写好的这个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://img.haomeiwen.com/i24475539/e3b3175c3006227a.png" alt="鸡蛋" style="zoom:25%;" />
<center>最后祝大家早日不卷!~</center>
点个在看吧各位~ ✐.ɴɪᴄᴇ ᴅᴀʏ 〰
本文由mdnice多平台发布
网友评论