在分析数据的时候,中间的步骤会在得到最终结果前制造一大堆可能并没有更多用途的变量,管道操作符%>>%可以极大地简化指令。

比如多元分析中一个常用的聚类,就需要以下步骤:

library(vegan)

my_dist<-vegdist(dat,"bray")

my_clust<-hclust(my_dist,"ward.D")

plot(as.dendrogram(my_clust),horiz=T)

这中间产生了my_dist, my_clust两个变量,实际上用处都不是很大,如果要看的数据很多,又不想写function,管道操作符就很好用,只要如下语句:

library(pipeR)

library(vegan)

vegdist(dat,"bray")%>>%hclust("ward.D")%>>%as.dendrogram%>>%plot(horiz=T)

这样就能得到同样的结果。管道操作符的作用是把上一步计算的结果传送给下一步,作为下一个指令的第一个参数执行。着实是个伟大的创造。

当然不用管道操作符也能一句指令完成这个过程:

plot(as.dendrogram(hclust(vegdist(dat,"bray"),"ward.D")),horiz=T)

但是这样的可读性比使用管道操作符就要差很多了。

目前R(3.3.1)默认启动加载的包里没有管道操作符,需要手动加载包才能使用。每次启动输library()也是挺烦的,要是有数个包每次都要用,不如索性就让它们启动时自动加载好了。

在R的安装目录下找到/etc/Rprofile.site进行编辑(我是用Notepad++打开的),插入以下语句:

options(defaultPackages=c(getOption("defaultPackages"),"pipeR","vegan"))

下一次启动R时pipeRvegan都已经加载好了^_^

另外在其他包里的管道操作符与pipeR的写法略有不同,比如dplyrmagrittr%>%,更简单一点。

上面语句执行的结果是这样的(只是一堆随机数而已):

clust example

 

Leave a Reply

Your email address will not be published. Required fields are marked *