来源 | R友舍

1,R Coder的福音

Magrittr包实现了UNIX下的流式操作,即在R的编程环境下,也可以实现UNIX下的|管道符的操作,如下:
`> iris[,1:4] %>%

  • colSums`

得到如下结果:

Sepal.Length Sepal.Width Petal.Length Petal.Width 876.5 458.6 563.7 179.9

管道操作真的减少了代码量,节省时间,对于R CODER来说一个福音。再也不用没操作一次就赋值一个变量了。


2,下面简单介绍四种常用的管道操作:

  • %>%:

    • 常用的管道操作就是%>%了,见上面的例子。它的作用就是把当前操作的结果,传递给下一步,然后继续操作,继续传递……

    • 这个基本满足60%的R CODER的需求了吧。

  • %$%:

    • 当然,在特殊的情况下,比如生成新的变量,下一个操作需要用到变量的name,需要把这个变量传递下去,则需要%$%

    • 比如:
      data.frame(z = rnorm(100)) %$% ts.plot(z),这个地方,ts.plot()需要使用z这个name,所以需要把它传递下去,如果用%>%则不能实现这个功能。

  • %T%:

    • 在更特殊的情况下,比如Plot等函数不能产生数据的结果,比如在a->plot->c过程中,plot不传递数据给c,但是我们还想在C用a的数据,怎么办?

    • 这个时候下,就需要%T>%的操作符,如下:
      rnorm(200) %>% matrix(ncol = 2) %T>% plot %>% # plot usually does not return anything. colSums

  • %<>%:

    • 还有一种,是左边的数据可以被更新,如下: x <- rnorm(100) x %<>% abs %>% sort,从这个可以看到,x是经过了abssort之后的,最后的结果是排序后正的随机数。


3,管道操作后数据的调用

%T>%%$%可以使用变量以外,%>%之后的数据使用也很重要。使用.(dot)作为变量使用,比较方便,如下:

  • x %>% f is equivalent to f(x):

  • x %>% f(y) is equivalent to f(x, y):

  • y %>% f(x, .) is equivalent to f(x, y) and z %>% f(x, y, arg = .) is equivalent to f(x, y, arg = z):

  • 1:10 %>% {c(min(.), max(.))} is equivalent to c(min(1:10), max(1:10)).:

  • a %>% (function(x) x^2), and 1:10 %>% (call("sum"))

  • 还可以直接赋值新变量,比如 iris[1:4,] %>% { my_data <- . colSums(my_data) }

有了上述介绍的管道操作功能,基本就可以满足日常的数据的处理了。

  • 最担心的事情终于发生了,APP已经可以一键“脱掉”你的衣服了

  • 我造的假我自己打,Adobe推出“反PS”

  • 李彦宏被泼水,是“多数人的暴力”还是“群众的宣泄”

Magrittr包:简化你的R代码相关推荐

  1. R语言观察日志(part20)--包的组件之R代码

    学习笔记,仅供参考,有错必纠 文章目录 R代码 R代码的工作流程 组织函数 代码风格 对象名称 空格 余下的请看R语言观察日志(part16)--Google's R Style Guide 顶层代码 ...

  2. R语言中的管道操作——magrittr包

    R语言中的管道操作--magrittr包 一.项目环境 开发工具:RStudio R:3.5.2 相关包:magritter 二.数据准备以及问题阐述 这次要解决的问题是如何使用提取数据框中所有包含缺 ...

  3. R 语言管道符(magrittr包)

    R语言管道符 R包 Package: magrittr介绍 Package: magrittr安装 常用管道操作符的使用 向右操作符:%>% 向左操作符:%T>% 解释操作符(属性操作符) ...

  4. 把函数包起来就是一个R包 - 完整开发指南

    生物信息学习的正确姿势 NGS系列文章包括NGS基础.高颜值在线绘图和分析.转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这).ChIP-seq分析 (ChIP-seq基本分析流 ...

  5. 独家 | 一文读懂最大似然估计(附R代码)

    作者:阿尼·辛格 翻译: 陈之炎 校对:丁楠雅 本文约4200字,建议阅读10+分钟. 本文将研究MLE是如何工作的,以及它如何用于确定具有任何分布的模型的系数. 简介 解释模型如何工作是数据科学中最 ...

  6. 手把手教你用Prophet快速进行时间序列预测(附Prophet和R代码)

    作者:ANKIT CHOUDHARY 翻译:王雨桐 校对:丁楠雅 本文约3000字,建议阅读12分钟. 本文将通过拆解Prophet的原理及代码实例来讲解如何运用Prophet进行时间序列预测. 简介 ...

  7. 机器学习算法清单!附Python和R代码

    来源:数据与算法之美 本文约6000字,建议阅读8分钟. 通过本文为大家介绍了3种机器学习算法方式以及10种机器学习算法的清单,学起来吧~ 前言 谷歌董事长施密特曾说过:虽然谷歌的无人驾驶汽车和机器人 ...

  8. 10 种机器学习算法的要点(附 Python 和 R 代码)(转载)

    10 种机器学习算法的要点(附 Python 和 R 代码)(转载) from:https://zhuanlan.zhihu.com/p/25273698 前言 谷歌董事长施密特曾说过:虽然谷歌的无人 ...

  9. R语言-解决问题:程辑包‘xxx’是用R版本3.3.4 来建造的

    用R的时候会碰到这种情形: warning :程辑包'xxx'是用R版本3.3.4 来建造的 尽管R这样提示,但是不影响这个包的使用.因此是可以继续用的,只是它会有这样的提示而已. 出现这种警告的原因 ...

  10. 机器学习算法一览(附python和R代码)

     机器学习算法一览(附python和R代码) 来源:数据观 时间:2016-04-19 15:20:43 作者:大数据文摘 "谷歌的无人车和机器人得到了很多关注,但我们真正的未来却在于能 ...

最新文章

  1. android 如何获得activity的view对象,Android的Activity 、 Window 、 View之间的关系
  2. 图像缩放算法_技术专栏|基于无人机LK光流算法的适用性及其优化方法探究
  3. 4进程原语:fork()函数,getpid()函数和getppid()函数,getuid()函数,getgid()函数,vfork()
  4. 字符串转换成java对象然后通过@RestController返回json对象
  5. linux c实现线程超时退出,c – 如何在另一个线程的超时内唤醒select()
  6. C语言课后习题(56)
  7. js 使用replace替换、全部替换、替换动态数据方法
  8. Tensorflow源码编译
  9. dll的基址与对应的lib文件
  10. 把图片url 伪静态 php,php使动态URL标签链接转成伪静态
  11. Unity渲染管线详解
  12. sop流程图模板_SOP模板-标准操作流程编写程序.doc
  13. itest考试切屏能检测出来吗_itest考试作弊怎么检测
  14. gorm中一对一,多对多关系
  15. 微信支付可能改变的六大行业
  16. 王者荣耀又开始“神仙”操作,全新的神仙英雄在体验服上线!
  17. Android开发—简单的图片浏览器
  18. Vue的模板语法及案例
  19. string.h头文件
  20. 【Lintcode】1367. Police Distance

热门文章

  1. 关于中国男女的一些私密数据......
  2. 分布式服务的幂等性设计,值得学习!
  3. 看图说话,FastJson 并没有那么流行!
  4. Java高并发之设计模式,设计思想!
  5. 开源许可协议了解这些就够了
  6. 像招程序员那样招司机,结果……
  7. 上传本地项目到gitee_使用git将本地代码上传到gitee远程仓库
  8. office版本都有哪些_文员需要熟练掌握哪些办公软件啊?
  9. es6 属性及常用新属性汇总
  10. luogu4360 锯木厂选址 (斜率优化dp)