社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

reticulate: R interface to Python

R语言中文社区 • 7 年前 • 739 次点击  

作者: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

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

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语言爬虫实战案例分享


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/lwswYHAZEv
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/9483
 
739 次点击