作者:JJ Allaire

翻译:黄小伟,先后从事游戏、社交及金融数据研究及应用相关工作,目前就职网易杭州


一. 基础介绍

CRAN已于2018年3月21日收录reticulat包(1.6版本),它包含了用于Python和R之间协同操作的全套工具,在R和Rstudio中均可使用。主要包括:

1)在R中支持多种方式调用Python。包括R Markdown、加载Python脚本、导入Python模块以及在R会话中交互式地使用Python。

2)实现R和Python对象之间的转换(例如R和Python数据框、R矩阵与NumPy数组之间)。

3)灵活绑定到不同版本的Python,包括虚拟环境和Conda环境。

在R会话中嵌入了Python会话,从而实现了无缝的、高性能的互操作性。如果你是使用Python进行某些工作的R开发人员或使用两种语言的数据科学团队的成员,那么reticulate包可以极大地简化你的工作流程!

二. 操作说明

1. reticulate包安装

install.packages("reticulate")

library("reticulate")

2. R Markdown中应用Python

reticulate包含一个用于R Markdown的Python引擎,具有以下功能:

1)可在R会话中嵌入的单个Python会话中,运行Python块。同时Python块之间的共享变量/状态。

2)可打印Python输出,包括matplotlib的图形输出。

3)可使用py对象访问R中Python块中创建的对象。

4)使用r对象从Python中访问在R块中创建的对象。

同时,内置了许多用于Python对象类型转换的方法,包括NumPy数组和Pandas数据框。 例如,你可以使用Pandas读取和操作数据,然后使用ggplot2轻松绘制Pandas数据框:

注释:加载安装reticulate时,默认情况下都会在R Markdown中启用Python引擎

3. 加载Python模块

可以使用函数:import() 导入任何Python模块并从R中调用它。例如,此代码导入Python os模块并调用函数:listdir()

library(reticulate)

os <- import("os")

os$listdir(".")

可以通过$运算符访问Python模块和类中的函数和其他数据(类似于与R列表,环境或引用类进行交互的方式)


4. 载入Python脚本

可以使用函数:source_python()获取任何Python脚本,就像使用R脚本一样。如果你有以下Python脚本:flights.py

import pandas

def read_flights(file):  

flights = pandas.read_csv("flights.csv")  

flights = flights[flights['dest'] == "ORD"]  

flights = flights[['carrier', 'dep_delay', 'arr_delay']] 

flights = flights.dropna()  

return flights

然后,你可以编写脚本源代码并按如下所示调用函数:read_flights()

source_python("flights.py") 

flights <- read_flights("flights.csv")

library(ggplot2) 

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


5. Python REPL

如果你想以交互方式使用Python,则可以调用函数:repl_python(),该函数提供了嵌入在R会话中的Python REPL。 在Python REPL中创建的对象,可以通过reticulate导出py对象,并在R中进行调用。 例如:

在Python REPL中输入exit以返回到R提示符。同时,Python代码还可以使用r对象访问R会话中的对象(例如r.flights)


6. 类型转换

当调用Python时,R数据类型会自动转换为它们等效的Python类型。 当值从Python返回到R时,它们会被转换回R类型。 类型转换如下:

如果返回自定义类的Python对象,则返回该对象的R引用。


7. 更多学习

reticulate网站(https://rstudio.github.io/reticulate/) 包括了使用该软件包的详细文档,主要包括:

1)Calling Python from R : 介绍从R访问Python对象的各种方法以及可用于更高级的交互和转换行为的函数。

2)R Markdown Python Engine : 提供有关在R Markdown文档中使用Python块的详细信息,包括如何从R块调用Python代码,反之亦然。

3)Python Version Configuration Python版本配置 : 描述用于确定R会话中使用哪个版本的Python的工具。

4)Installing Python Packages : 有关从PyPI或Conda安装Python软件包的文档,以及使用virtualenvs和Conda环境管理软件包安装的文档。

5)Using reticulate in an R Package : 在R软件包中使用reticulate的准则和最佳实践。

6)Arrays in R and Python : 深层次讨论R和Python中数组之间的差异以及对转换和互操作性的影响。

参考资料:

1.reticulate网站: https://rstudio.github.io/reticulate/

2.源码学习: https://github.com/rstudio/reticulate

3.问题反馈: https://github.com/rstudio/reticulate/issues

往期精彩内容整理合集 

2017年R语言发展报告(国内)

R语言中文社区历史文章整理(作者篇)

R语言中文社区历史文章整理(类型篇)

公众号后台回复关键字即可学习

回复 R                  R语言快速入门及数据挖掘 
回复 Kaggle案例  Kaggle十大案例精讲(连载中)
回复 文本挖掘      手把手教你做文本挖掘
回复 可视化          R语言可视化在商务场景中的应用 
回复 大数据         大数据系列免费视频教程 
回复 量化投资      张丹教你如何用R语言量化投资 
回复 用户画像      京东大数据,揭秘用户画像
回复 数据挖掘     常用数据挖掘算法原理解释与应用
回复 机器学习     人工智能系列之机器学习与实践
回复 爬虫            R语言爬虫实战案例分享

reticulate: R interface to Python相关推荐

  1. reticulate:在R中使用Python

    reticulate 是 R 的一个程序包,允许在 R 中使用 Python.该包本质上是提供了本地 Python 环境的 R 接口,在 R 中调用该接口完成 Python 代码的执行. 该包提供以下 ...

  2. R语言添加Python模块错误的解决方法

    使用R Studio添加Python包pytdx时,使用reticulate(R包)中import来导入已下载好的pytdx(Python包) pip install pytdx # 先在终端中下载p ...

  3. R语言和Python连接hive

    连接原理:R语言和Python连接,R中读取的数据可以传递到python中进行处理,同理python中的结果可以传递到R语言中进行,二者满足双向传递.而Python连接hive的方法较多且简单,因此采 ...

  4. python 运行r语言_如何在R中运行Python

    python 运行r语言 尽管我很喜欢R,但很显然Python还是一种很棒的语言-既适用于数据科学又适用于通用计算. R用户想要在Python中做一些事情可能有充分的理由. 也许这是一个很棒的库,还没 ...

  5. python的正则表达式 re-------可以在字符串前加上 r 这个前缀来避免部分疑惑,因为 r 开头的python字符串是 raw 字符串,所以里面的所有字符都不会被转义...

    正则表达式使用反斜杆(\)来转义特殊字符,使其可以匹配字符本身,而不是指定其他特殊的含义.这可能会和python字面意义上的字符串转义相冲突,这也许有些令人费解.比如,要匹配一个反斜杆本身,你也许要用 ...

  6. R语言和 Python —— 一个错误的分裂

    全世界有3.14 % 的人已经关注了 数据与算法之美 最近有一些文章提出与年龄相关的问题:"崭露头角的年轻数据科学家们是学习R语言还是Python更好?" 答案似乎都是" ...

  7. Python超越R,为何Python攀上数据科学巅峰?

    根据 KDnuggets最新调查,Python 生态系统已经超过了 R,成为了数据分析.数据科学与机器学习的第一大语言.本文对 KDnuggets 的此项调查结果做了介绍,并补充了一篇文章讲解为何 P ...

  8. R语言和python语言的区别在什么地方,各自的应用场景是什么

    R语言和Python语言都是广泛使用的数据分析和科学计算语言,但它们有一些不同之处. R语言是一种专门用于数据分析和统计建模的编程语言.它提供了许多内置的数据结构和函数,可以方便地进行数据处理.可视化 ...

  9. r语言和python的区别-Python和R语言之分析对比

    在Python中调用R或在R中调用Python,为什么是"和"而不是"或"? 在互联网中,关于"R和Python"的文章,排名前十的搜索结果 ...

  10. 记录R语言及python实现地质图形展示

    记录R语言及python实现地质图形展示 一.环境安装 目前环境:r3.3.3 python:3.7.0 遇到问题及解决: 1.no rJava: 安装macjava环境 2.mac 环境打不开ana ...

最新文章

  1. JAVA IDEA集成geotools gt-mif gdal读取.MIF
  2. unity3d-游戏实战突出重围,第四天 添加角色
  3. 楼层标高怎么引上去_【强烈推荐】工程图纸怎么看?
  4. Ocelot-基于.NET Core的开源网关实现
  5. bootstrap样式代码案例
  6. Akka Notes –演员记录和测试
  7. Php流式 大文件,如何使用PHP解析XML大文件
  8. 目标检测近5年发展历程概述(转)
  9. HDOJ 1875 畅通工程再续
  10. (32)VHDL实现同步复位D触发器
  11. python将数据导入wps_使用python调用wps v9转换office文件到pdf
  12. 网管管理软件的作用及发展趋势
  13. 文件比较软件修改比较文件时间戳方法
  14. 开源图像识别、imageai图像识别、对象识别、识别人、车、猫、狗等80种 简易版
  15. 聊聊微信内页面发Ajax请求会重复请求的问题
  16. 如何设置一个可扩展的MongoDB数据库?
  17. 2022年4月份京东有什么活动?
  18. 基于Java Web社区医院远程挂号
  19. Pr 视频效果:调整
  20. 群晖moments套件识别拍摄日期为1970错误的解决方法

热门文章

  1. windows server 安装php环境
  2. Spring Boot + WebMagic 实现网页爬虫,写得太好了!
  3. 瞬间几千次的重复提交,我用 SpringBoot+Redis 扛住了~
  4. 推荐一款日志切割神器!我常用~
  5. 苏宁数据中台架构实践,高清技术版
  6. 23种设计模式及案例整理分享(建议收藏)
  7. 这月到手的工资多了没?
  8. Java笔记(14):常用对象--正则表达式、GC
  9. PL\SQL设置中文
  10. php利用svn hooks将程序自动发布到测试环境