前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >🤔 Reticulate | 如何在Rstudio中优雅地调用Python!?

🤔 Reticulate | 如何在Rstudio中优雅地调用Python!?

作者头像
生信漫卷
发布于 2023-02-24 05:49:44
发布于 2023-02-24 05:49:44
2.2K00
代码可运行
举报
运行总次数:0
代码可运行

1写在前面

最近遇到一个大名鼎鼎的包叫Scanpy,用于单细胞测序的分析,不过需要在Python中运行。🫠 于是,我就研究了一下如何在Rstudio中调用这个神包。👀

这里和大家分享一下如何在Rstudio中调用python吧。🥰

2安装Python

2.1 方法一

你可以选择在官网直接下载安装,地址如下:https://www.python.org/downloads/ , 按照自己的操作系统下载即可。🤨

随后再配置环境。😁

2.2 方法二(推荐)

我们输入以下代码,如果是从来没有进行过操作的,Rstudio会默认下载 Miniconda来进行环境搭建及的管理。🌟 由于我这里已经安装过了,所以不会提示再次安装。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
reticulate::repl_python()

有时候你只是不知道自己的python在哪里,那你可以这样做来获取路径。👇

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Sys.which("python")

3配置Python环境

3.1 安装并加载相关包

接着我们需要安装两个包,来帮助调用Python。😘

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
## 安装
install.packages("reticulate")
install.packages("Rcpp")
## 加载
rm(list = ls())
library(reticulate)

3.1 配置环境

1️⃣ 方法一

这里可以输入你的pthon路径(指定使用版本)。😉

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Sys.setenv(RETICULATE_PYTHON = ".")

如果你要通过代码配置virtual 或者 Conda环境中的python,可以这样👇:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
use_virtualenv(".")
use_condaenv(".")

2️⃣ 方法二

你也可以选择在设置里配置python环境。🤩



3.2 测试环境

我们看一下我们python是否安装好了。👀

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
py_available()

3.3 安装python上的包

这里我们以pandas为例,不做过多介绍啦。🐶

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
reticulate::py_install("pandas")

4Rstudio中调用python包

这里我们用python常用的一个画图包,matplotlib为例,先安装一下吧。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
reticulate::py_install("matplotlib")

4.1 方法一

Python Script中调用python功能。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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语言进行识别。🥰

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
```{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()
```

5使用Python Script

有时候你写好了一个Python Script,然后你想在Rstudio中调用,可以这样。👇 1️⃣ 假设我们在python环境下写了一个Python Script,名为flights.py。🤒

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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了。😂

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
source_python("flights.py")
flights <- read_flights("flights.csv")

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

最后祝大家早日不卷!~


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信漫卷 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验