R语言和python语言是生信行业经常使用的两个计算机语言,R语言具有统计和画图方面的优势,但是R语言在文件读写上的速度实在不敢恭维;Python具有较快的文件读写功能,但是其统计和画图却不如R语言用着方便。
  今天介绍一个R包——“reticulate”,可以在R语言中直接调用Python,这样就可以把Python读写的优势和R语言统计画图的优势结合起来了。
  首先安装R包,对于R包的安装,可以以下两种方式,一个是R自带的install.packages(),一个是基于BiocManager包的BiocManager::install(),推荐使用BiocManager::install(),这种方法可以安装的包更多一些,较为方便。
BiocManager::install("reticulate")
  reticulate包实现在R中直接调用Python命令,并且可以直接使用Python命令产生的变量。
  reticulate包提供repl_python()和exit命令,实现进入Python代码块和退出Python代码块,在repl_python()和exit之间的代码为Python代码,其他代码为R代码。
示例:
repl_python() ###进入python代码快
fileIN = open("E:/a.txt")
a = []
for i in fileIN:
  a.append(i)
fileIN.close()
exit ###退出代码块
  以上Python代码读取了一个叫a.txt的文件,并把每行内容存进列表里(Python里的列表相当于R里的向量)。
  接下来展示退出Python代码块后如何使用在Python里的变量。
aArr <- py$a
for(i in aArr){
print(i)
}

  使用py$a就把Python代码块里的变量赋值给了R里的变量。

  如果想要反向使用,即想在Python代码块里使用R的变量,怎么用呢?以下是示例:

a <- py$a
print(length(a)) repl_python()
b = r.a ###使用r.a就把R里的变量a赋值给了Python代码块里的变量b
print(len(b))
exit

  这样,利用reticulate包我们就可以把Python和R结合起来使用了。

 
 

一个R包—reticulate—在R中调用Python的更多相关文章

  1. 如何制作Jar包并在android中调用jar包

    android制作jar包: 新建android工程,然后右击,点击导出,选择导出类型为Java下的JAR file,在java file specification 中不要选择androidmani ...

  2. 如何在Java中调用Python代码

    有时候,我们会碰到这样的问题:与A同学合作写代码,A同学只会写Python,而不会Java, 而你只会写Java并不擅长Python,并且发现难以用Java来重写对方的代码,这时,就不得不想方设法“调 ...

  3. 在Java中调用Python

    写在前面 在微服务架构大行其道的今天,对于将程序进行嵌套调用的做法其实并不可取,甚至显得有些愚蠢.当然,之所以要面对这个问题,或许是因为一些历史原因,或者仅仅是为了简单.恰好我在项目中就遇到了这个问题 ...

  4. 在Java中调用Python代码

    极少数时候,我们会碰到类似这样的问题:与A同学合作写代码, A同学只会写Python,不熟悉Java ,而你只会写Java不擅长Python,并且发现难以用Java来重写对方的代码,这时,就不得不想方 ...

  5. C++中调用Python脚本

    C++中调用Python脚本的意义就不讲了,至少你可以把它当成文本形式的动态链接库, 需要的时候还可以改一改,只要不改变接口, C++的程序一旦编译好了,再改就没那么方便了 先看Python的代码 代 ...

  6. C++中调用Python脚本(转载)

    转载▼ 标签: 杂谈 C++中调用Python脚本的意义就不讲了,至少你可以把它当成文本形式的动态链接库,需要的时候还可以改一改,只要不改变接口, C++的程序一旦编译好了,再改就没那么方便了先看Py ...

  7. 在QT C++中调用 Python并将软件打包发布(裸机可运行)

    为了提高工作效率,需要一个可以自动生成多份相关联的word文档免去繁琐复制粘贴工作的软件.最后选定使用QT C++做界面和主要逻辑程序设计,对word的操作使用python写好对应的函数,然后在QT中 ...

  8. C#中调用python方法

    最近因为项目设计,有部分使用Python脚本,因此代码中需要调用python方法. 1.首先,在c#中调用python必须安装IronPython,在 http://ironpython.codepl ...

  9. android开发中调用python代码(带参数)

    android开发主要用到的是java代码,但是当开发涉及到一些算法时,往往用python可以提高软件的运行速度,也更加便捷,这里分享自己项目调用python代码的方式,主要有以下几个步骤(个人方法, ...

  10. 在java中调用python方法

    1.http://sourceforge.net/projects/jython/下载jython包,把其中的jython.jar添加到工程目录 示例: 1.摘自:http://blog.csdn.n ...

随机推荐

  1. 用JavaScriptt从一个路径字符串中获取文件名

    思路 1.通过'\'关键字用split分割成数组 2.取分割后数组的最后一个就是文件名 3.另外,字符串中\是没意义的,需要2个\\ 相关代码 <script> var a='C:\\Pr ...

  2. Protues中51单片机按键无法复位(已解决)

    前言 昨晚用 Protues 搭建了 51 的最小系统电路,在实物中好用的复位电路,到仿真里不能正常复位了. 51 单片机是高电平复位,所以在运行时 RST 引脚应该是低电平,但在仿真中 RST 引脚 ...

  3. 工作中的技术总结_ form表单使用注意事项之form触发后台提交事件 _20220127

    工作中的技术总结_ form表单使用注意事项之form触发后台提交事件 _20220127 如无必要不要使用 form标签 来作为组件的父节点 事件过程: 项目使用的是 spring + jsp 的框 ...

  4. BeautifulSoup优化测试报告

    一.是什么 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库. 中文官方文档:https://beautifulsoup.readthedocs.io/zh_C ...

  5. 15.Kubernetes持久化存储

    Kubernetes持久化存储 前言 之前我们有提到数据卷:emptydir ,是本地存储,pod重启,数据就不存在了,需要对数据持久化存储 对于数据持久化存储[pod重启,数据还存在],有两种方式 ...

  6. Firefox无需第三方插件在关闭最后一个标签后也不退出程序

    about:config 输入lasttab 变成false

  7. 崖山数据库-监控运维平台-YCM 配置部署详解

    准备工作:操作系统版本:[root@node10 ~]# uname -aLinux node10 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 ...

  8. golang之浮点数处理库decimal

    decimal库包是用来解决float类型对象之间运算不准确的问题的.所以,如果你想使用decimal库包,你必须先把float类型对象通过decimal.NewFromFloat()函数转成deci ...

  9. 【实战问题】-- 布隆过滤器的三种实践:手写,Redission以及Guava(2)

    前面我们已经讲过布隆过滤器的原理[实战问题]-- 缓存穿透之布隆过滤器(1),都理解是这么运行的,那么一般我们使用布隆过滤器,是怎么去使用呢?如果自己去实现,又是怎么实现呢? 目录 布隆过滤器 手写布 ...

  10. 一个关于CountDownLatch的并发需求

    需求 A,B,C可并发运行,全部成功才算成功,一个失败全员回滚. 思考 使用CountDownLatch,可以保证三个线程结束后,才进行提交成功状态.但是怎么才能判断某个任务失败了呢? 捕获子线程异常 ...