写在前面
其实大家在Rstudio
中像下图这样直接创建Python
脚本后,Rstudio
便可以把代码直接交给Python
命令解释器来处理。
或者说,大家也可以在写Rmarkdown
时直接把代码块改成这样:
这样也可以在代码块中执行Python
命令:
print('I am Python')
## I am Python
但很多情况下我们需要R
语言(R语言基础学习手册)和Python(``[生信Python速查手册](http://mp.weixin.qq.com/s?__biz=MzAwMzIzOTk5OQ==&mid=2247499921&idx=1&sn=dcd6f95596e3de9bf378d850c217fe78&chksm=9b3cb9c1ac4b30d7bbd44057b181f87541f5904d24f903494ae557e768ae00c208c1b68b45c7&scene=21#wechat_redirect)``)
之间更高的交互性,例如上面我们在Rstudio
中写Python
脚本、利用Rmarkdown
植入Python
代码块、在R
中调用Python
包、在R
和Python
之间传递对象或数据框、灵活调用各版本的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 reticulate
中Python
的使用
你可以在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