🤔 Reticulate | 如何在Rstudio中优雅地调用P

2022-10-23  本文已影响0人  生信漫卷

写在前面

最近遇到一个大名鼎鼎的包叫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多平台发布

上一篇 下一篇

猜你喜欢

热点阅读