如何在R语言中调用Python

文摘   科技   2024-09-02 10:05   江苏  

写在前面


其实大家在Rstudio中像下图这样直接创建Python脚本后,Rstudio便可以把代码直接交给Python命令解释器来处理。

或者说,大家也可以在写Rmarkdown时直接把代码块改成这样:

这样也可以在代码块中执行Python命令:

print('I am Python')
## I am Python

但很多情况下我们需要R语言(R语言基础学习手册)和Python(生信Python速查手册)之间更高的交互性,例如上面我们在Rstudio中写Python脚本、利用Rmarkdown植入Python代码块、在R中调用Python包、在RPython之间传递对象或数据框、灵活调用各版本的Python等等。这些应用对于单细胞空转领域(空间转录组学习手册合辑)的同学尤为重要,这里给大家推荐一个神包Reticulate,能够让大家在R语言中实现向Python的无缝切换。


Reticulate的使用


二、Reticulate的使用

2.1 安装


# 可以直接从r-cran上安装  
if(!require(reticulate))install.packages("reticulate")
## 载入需要的程辑包:reticulate
## Warning: 程辑包'reticulate'是用R版本4.3.3 来建造的


library(reticulate)
packageVersion('reticulate')# 看一下版本
## [1] '1.35.0'

2.2 设置Python路径与环境

如果是Linux,可以如此设置reticulate调用的Python路径:


use_python("/usr/local/bin/python")

如果是Windows,那么需要加上python程序的.exe后缀名:


use_python("C:/Users/Administrator/Documents/.virtualenvs/r-reticulate/Scripts/python.exe")

当然,你也可以像conda那样创建虚拟环境来使用Python,默认的Python环境为


# 创建名为TF_GPU的虚拟环境:
virtualenv_create('TF_GPU')

# 激活并使用虚拟环境:
use_virtualenv('TF_GPU')

# 删除对应虚拟环境:
virtualenv_remove('TF_GPU')


# 查看虚拟环境:
virtualenv_list()
## [1] "r-reticulate" "TF_GPU"

reticulate甚至能够直接帮你配置conda环境:


# 安装conda环境:
reticulate::install_miniconda()


# 创建名为my_conda的conda虚拟环境:
conda_create('TF_GPU',python_version = 3.9)# 指定python版本


# 激活并使用虚拟环境:
use_condaenv('TF_GPU')


# 利用conda环境安装python包"tensorflow":
conda_install(packages ='tensorflow-gpu')

你可以通过这种方式来查看当前reticulate下的Python配置信息:


reticulate::py_config()
## python:         C:/Users/Administrator/AppData/Local/r-miniconda/envs/TF_GPU/python.exe
## libpython: C:/Users/Administrator/AppData/Local/r-miniconda/envs/TF_GPU/python39.dll
## pythonhome: C:/Users/Administrator/AppData/Local/r-miniconda/envs/TF_GPU
## version: 3.9.18 | packaged by conda-forge | (main, Dec 23 2023, 16:29:04) [MSC v.1929 64 bit (AMD64)]
## Architecture: 64bit
## numpy: [NOT FOUND]
##
## NOTE: Python version was forced by RETICULATE_PYTHON_FALLBACK

2.3 reticulatePython的使用

你可以在Rmarkdown的代码框中直接写Python的原生代码:

也可以像下面这样通过R来编译Python代码,例如导入os包:


os <- import("os")

需要注意的是,在R中直接用Python,需要把原来包名.函数名的形式换为包名$函数名的形式:


os$getcwd()# 在python中应该是os.getcwd()
## [1] "H:\\公众号\\2024\\free\\如何在R语言中调用Python"


rmd文件


感兴趣的同学可以看一下我的rmd文件跟着学习一下:

链接:https://pan.baidu.com/s/1ZPOBiy1uk4_CA-AOTeDgag?pwd=5p6x



参考

https://github.com/rstudio/reticulate


如何联系我们

公众号后台消息回复不便,这里给大家留一下领取资料及免费服务器(足够支持你完成硕博生涯的生信环境)的微信号,方便各位随时交流、提建议(别问在么,直接说来意)。此外呼声一直很高的交流群也建好了,欢迎大家入群讨论:

永久免费的生信、科研交流群

大家可以阅读完这几篇之后添加
给生信入门初学者的小贴士
如何搜索公众号过往发布内容

您点的每个赞和在看,我都认真当成了喜欢


Biomamba 生信基地
本人为在读博士研究生,此公众号旨在分享生信知识及科研经验与体会,欢迎各位同学、老师与专家的批评指正,也欢迎各界人士的合作与交流。
 最新文章