31. R studio/R 工具指南(十四:在Rstudio中使用python和conda)
参见:https://cloud.tencent.com/developer/article/1657000 https://zhuanlan.zhihu.com/p/164507492 https://rstudio.github.io/reticulate/index.html
虽然作为数据分析从业者,R 和python 二者择其一已足以闯天下。
但毕竟天下武功百般,有的时候你使用的工具,或者是你处理的对象使用其他编程语言处理的,你又该怎么办呢?
学习python,你可能使用过编辑器如pycharm, vs code 等等。
但如果你是一个R 的重度使用者,比如我,那我建议你直接用Rstudio 就好了~
0. 准备工作
杀鸡的第一步是什么呢?得有鸡吧。
所以,你得有个python 环境。
这里我建议使用conda 进行管理,非常方便。
而在R 中使用python,则需要安装R 包reticulate。
现在R studio 也已经支持直接修改的操作,我们可以在全局设置中选择运行的python 环境:
如果你像我一样,安装了conda,可以直接在上面的窗口中选择不同conda 环境下的python。
如果你还没有创建conda 环境,可以参考下面的使用conda 条目。通过conda 分离不同python 或其他程序版本,可以防止因为软件或包版本不同造成的污染。
1. 安装python 的包
其他详细内容参考:https://rstudio.github.io/reticulate/articles/python_packages.html#overview-1
这里我只介绍在R 中使用conda。
类似我们通常在shell 中的使用习惯,也非常方便。
使用conda
毕竟作为一个跨平台,且集各种环境与软件于一身的工具,我们在日常中很难不去接触他。
先前我们提到过conda 的使用,而现在,可以直接以R 代码的形式进行管理。
不过需要注意的是,这里的conda 命令,更多的还是为了方便的控制python。
常用命令如下:
conda_list() List all available conda environments
conda_create() Create a new conda environment
conda_install() Install a package within a conda environment
conda_remove() Remove individual packages or an entire conda environment
use_condaenv() use specific conda env
此外,如果你没有conda,还可以使用该包命令miniconda:
# 安装miniconda环境
install_miniconda()
# 显示miniconda安装地址
miniconda_path()
# 更新miniconda环境
miniconda_update()
接下来就可以在R 中使用conda 安装包了:
conda_create("r-reticulate")
conda_install("r-reticulate", "scipy")
当然我们也可以直接在所在的python 环境内直接安装:
py_install("pandas")
1. 直接在R 中运行python 模块与函数
reticulate 包非常牛X 的一点是,它允许我们使用R 风格的代码来运行python。
我们只需要将模块导入并制定一个变量,就可以使用$ 符号调用它的模块。
比如说:
library(reticulate)
os <- import("os")
os$listdir(".")
[1] ".git" ".gitignore" ".Rbuildignore" ".RData"
[5] ".Rhistory" ".Rproj.user" ".travis.yml" "appveyor.yml"
[9] "DESCRIPTION" "docs" "external" "index.html"
[13] "index.Rmd" "inst" "issues" "LICENSE"
[17] "man" "NAMESPACE" "NEWS.md" "pkgdown"
[21] "R" "README.md" "reticulate.Rproj" "src"
[25] "tests" "vignettes"
牛的是,还会显示帮助文档:
稍微有些差强人意的就是,并不能提示函数参数的使用。
另外,我们在python 中执行的这些操作,都会被保存在py 对象中。
> py$a
[1] 3
> pryr::otype(py)
[1] "S3"
关于R 中运行python 的详细用法较为复杂。这里先挖个坑~
2. 创建python 脚本运行
类似在R 中,我们通过source 运行R 脚本。reticulate 包提供了source_python() 函数,可以让我们加载python 中的函数。
首先是定义python 脚本:
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
接下来可以在R 中直接使用:
source_python("flights.py")
flights <- read_flights("flights.csv")
3. 直接进入python 交互
> repl_python()
Python 3.8.3 (/Users/appe/opt/anaconda3/bin/python)
Reticulate 1.20 REPL -- A Python interpreter in R.
>>> a = 3
>>> b = 4
>>> a,b = b,a
>>> a
4
>>> b
3
相关文章
- Python使用tkinter组件Label显示简单数学公式
- 内网渗透之DCOM横向移动
- 以目标为导向的语义交流的共同语言——一个课程学习框架
- python爬虫前奏【成信笔记】
- HTML 5 File API:文件拖放上传功能
- 教你快速创建 Python 虚拟环境
- pyenv 实现Python多版本自由切换
- 用 Python 对 Excel文件进行批量操作
- Python - 接入钉钉机器人
- Python - 抓取 iphone13 pro 线下店供货信息并发送到钉钉机器人,最后设置为定时任务
- crontab - 解决 mac 下通过 crontab 设置了 Python 脚本的定时任务却无法运行
- [源码解析] PyTorch分布式(5) ------ DistributedDataParallel 总述&如何使用
- Python科普系列——类与方法(上篇)
- SAP对STO的交货单执行PGI,报错 -Fld selectn for mvmt type 643 acct 400020 differs
- Spring Boot 实现通用 Auth 认证的 4 种方式
- 盘点4种使用Python批量合并同一文件夹内所有子文件夹下的Excel文件内所有Sheet数据
- OushuDB 学习经验分享(三):技术特点
- Java和Python思维方式的不同之处
- Python中日志记录新技能
- 奥比中光Gemini OpenCV—Python使用