如何在R语言中调用Python

写在前面

其实大家在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"

参考

https://github.com/rstudio/reticulate

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值