现在可以很容易地同时使用两种语言来获得最好的结果

最近,我同时使用R和Python进行了更多的项目。 对我而言,使用最佳工具来完成工作变得越来越重要,而不受单一语言的束缚。 Python在某些方面做得最好,R在某些方面做得最好,因此,如果我们在需要的时候可以同时使用这两种方法,那么我们就可以发挥出最好的性能。 在最近的示例中,我想创建一个Shiny应用程序来生成参数化的Powerpoint文档,这个应用我是用R的tidyverse对我的数据进行编码处理,使用Python编写了Powerpoint编辑代码,因为这在python-pptx包中很容易。

现在,在RStudio IDE中使用两种语言进行操作确实非常容易。 为此,您需要在R中安装和加载网状软件包。您可以执行以下五项操作,以使您在同一项目中获得两种语言的无缝编码体验:

在项目启动时定义Python环境

为避免与使用错误的Python解释器相关问题,首先需要在项目启动时通过创建.Rprofile文件并将其保存在项目目录中来定义Python环境。 您的.Rprofile包含将在您的项目启动时执行的代码。 我通常在.Rprofile中有这两行代码:

Sys.setenv(RETICULATE_PYTHON = "<path>")
print(paste("Python environment forced to", Sys.getenv("RETICULATE_PYTHON")))

其中,是您要使用的Python环境中Python可执行文件的路径。 第一个命令将其设置为您的python可执行文件。 第二个命令将打印此确认,该确认将在您每次启动项目时显示在您的终端中。 这是我启动一个项目时终端的外观:

使用repl_python()在Python中实时编码

在项目中如果需要测试Python和R可以使用 Reticulate软件包中的repl_python()函数将R终端切换到Python终端,以便您可以在Python中进行实时编码。 您可以使用exit命令退出它,然后在R中编写更多代码,然后再回到Python终端,它仍然会记住上一个会话中的所有对象,这意味着它很容易在各种语言之间无缝地移动。 这是一个简单的示例:

在Python和R之间交换对象

可以在Python和R之间交换任何相当标准的数据对象,例如值,列表和dataframes 。要在Python中使用名为my_r_object的R对象,可以使用r.my_r_object进行调用。 要在R中使用名为my_python_object的Python对象,可以使用py $ my_python_object进行调用。 这是另一个实际的操作示例,其中我将R中的themtcars数据集引入了Python:

数据对象将根据不同的语言转换为它们的等效结构。 例如,R中的列表将被翻译成Python中的字典:

将Python函数转换为R函数

当同时使用这两种语言时,你最终会需要将Python代码作为一个R的函数来执行.如果将编写的Python函数写到一个文件中,然后R中调用source_python(),那么这个文件可以以源代码文件的形式使用。下面是一个简单的例子,我写了一个Python函数将两个数字相加,并将其保存在文件sumof.py中:

def sumof(a, b):return a+b

现在,我可以获取sumof.py并将其变成和R函数:

创建包含R和Python代码的MD文档

正确设置.Rprofile后,您可以创建具有两种语言代码块的文档,并且可以在代码块之间交换对象。 以下是一些简单的R Markdown代码,用以说明这一点:

这会产生以下输出:

同样,你可以用一种语言编写函数,在另一种语言中轻松使用它们:

对我来说,这个功能让我的工作中有了更多的可能。我希望这些技巧能够帮助您开始探索Python和R所提供的最佳功能。

作者:Keith McNulty

deephub翻译组

同一个项目中让R和Python无缝工作的五种方法相关推荐

  1. 多个html如何套用套一个头部,Vue.js项目中管理每个页面的头部标签的两种方法...

    在 Vue SPA 应用中,如果想要修改 HTML 的头部标签,如页面的 title ,我们只能去修改 index.html 模板文件,但是这个是全局的修改,如何为每个页面都设置不一样的 title ...

  2. Python中记住过去(模型状态)的五种方法

    在Python中记住过去(模型状态)的五种方法 从封闭函数和迭代器到状态机Python库 有人说... "那些不能记住过去的人,注定要重复它".G. Santayana, 1905 ...

  3. Python播放音乐的五种方法

    #音频播放方法一 song=AudioSegment.from_wav(r"D:\User\Dashujv\语音分析\data\声声慢.wav") from pydub.playb ...

  4. python引入模块的五种方式与内置模块

    模块 自定义模块 模块的定义与分类 模块的定义 简而言之,模块就是一些常用功能的集合,我们把一些常用的函数.变量或者方法写到一个python文件中,那么这个python文件就是模块,使用模块可以避免我 ...

  5. python 重载_python模块重载的五种方法

    环境准备 新建一个 foo 文件夹,其下包含一个 bar.py 文件 bar.py 的内容非常简单,只写了个 print 语句 只要 bar.py 被导入一次,就被执行一次 print 禁止重复导入 ...

  6. linux服务器清除cdn,Linux服务器中查找并删除大文件的五种方法,Linux系统清除文件内容的命令分享...

    很多时候,在处理Linux终端中的文件时,您可能希望清除文件的内容,而无需使用任何Linux命令行编辑器打开它.怎么能实现这一目标?在本文中,我们将借助一些有用的命令,通过几种不同的方式清空文件内容. ...

  7. windows调用python_如何在Windows操作系统中从R调用Python?

    我正在寻找一种在Windows操作系统上调用R中的python的方法.因为似乎没有可用的R包(至少没有最近更新的包),我正在寻找如何在R脚本中编写一组命令的线索,然后可以以批处理模式发送蟒蛇. 简而言 ...

  8. WebService CXF系列: SpringBoot同一个项目中集成JaxWS和JaxRS

    WebService CXF系列: SpringBoot同一个项目中集成JaxWS和JaxRS 介绍 项目介绍 项目架构 项目介绍 项目集成的原则 SpringBoot集成JaxWS 1. JaxWs ...

  9. python中none算变量吗_在python中对变量判断是否为None的三种方法总结

    三种主要的写法有: 第一种:if X is None; 第二种:if not X: 当X为None,  False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()这 ...

  10. Android项目中出现的Plugin with id ‘kotlin-android‘ not found解决方法

    Android项目中出现的Plugin with id 'kotlin-android' not found解决方法 参考文章: (1)Android项目中出现的Plugin with id 'kot ...

最新文章

  1. Flashtext:大规模数据清洗的利器
  2. HTML5标签的语义认知和理解
  3. 找出无序数组中最小的k个数(top k问题)
  4. 怎样解决MySQL数据库主从复制延迟的问题?
  5. HttpComponents入门解析
  6. webpack最佳入门实践系列(08)
  7. zznu-2025 简单环路
  8. Open_cv中常用函数的原型及参数解释(一)
  9. 交社保竟然还能领失业补助金,自己尝试去申请
  10. 什么是Excel的快速编号功能?
  11. 曲速未来 发布:新基建下,区块链将急速发展
  12. 前端面试题 —— HTML
  13. 学 习 中 的 思 考
  14. 前端面试笔记-CSS篇
  15. Crx搜搜 - 一个牛X的扩展商店
  16. 亚马逊美国站服装类目需要审核怎么办?亚马逊美国站服装好做吗?
  17. easyui combobox、validatebox、datebox必选、禁用、可用问题
  18. 软件工程期末复习汇总(非常详细)
  19. js简单实现拦截访问指定网址
  20. MAC电脑 安全与隐私 中没有任何来源选项怎么办

热门文章

  1. 单片机学习心得体会_经验总结
  2. 用计算机控制神舟十号,整理后的计算机控制系统复习题答案
  3. 企业管理中使用凌云仓库管理软件免费版的优势
  4. FFT蝶形算法的verilog实现专题——从FFT算法的定义开始入手
  5. CAD表格制作之CAD制图软件中如何合并表格?
  6. 在linux中安装搜狗输入法,如何在ubuntu下安装搜狗输入法
  7. 腾云驾雾了解Windows10和微软私有云
  8. 测度论与概率论基础(程士宏)学习笔记(二)
  9. flash砸金蛋_砸金蛋flash课件模版-幸运抽奖随机抽题-多媒体交互式flash游戏课件模版...
  10. 底层驱动 【One Day】gec6818开发板刷屏+secureCRT+tftpd32.334安装教程+SD启动卡教程