在COS上见到的一个新的R包
install pipeR:首先需要安装devtoolsinstall.package(devtools)
require(devtools)
install_github(“pipeR”,“renkun-ken”)
require(pipeR)
rnorm(10000,mean=10,sd=1) %>%
sample(size=100,replace=FALSE) %>%
abs %>%
log %>%
diff %>%
plot(col="red",type="l")
%>%起到管道的作用,也是这是这个包叫pipeR的原因? 不过恐怖的还不止是这个%>%,还有%>>%和%|>%,貌似牛人的包都有这种趋势,比如H大人的包里的加号。。。
作者的说明:pipeR v0.2版本中使用了三种符号(%>%,%>>%,%|>%),且功能上保持独立性,其中的设计原则是
- %>% 只管把前面的结果输送到下一个「函数」的第一个参数(因此后面可以是plot或者plot(col=“red”))
- %>>% 只管把前面的结果输送到下一个「表达式」中的.符号中(因此后面可以是一个函数表达式plot(.),或者plot(.,col=“red"),或者是.$a
- %|>% 只管把前面的结果根据下面指定的 lambda expression 来输送并且计算,因此后面必须是 (符号x -> 关于符号x的表达式) ,例如 (a -> plot(a,col="red”)) 这样,前面的结果就放在符号a中,然后计算plot(a,col=“red”)。如果a是个data.frame或者list,那么也可以是 (a -> a$xyz) 来提取 a中的元素。
require(pipeR)
rnorm(100000,mean=10,sd=1) %>>%
sample(.,size=length(.)0.2,replace=FALSE) %>%
abs %>%
log %>%
diff %>>%
plot(.,col="red",type="l",main=sprintf("length: %d",length(.)))
这里需要注意的是,使用%|>%的时候,后面应该是一个公式,而且是需要有括号界定,最重要的是,那个赋值箭头,是个右箭头,有被这个坑陷害过的孩子自觉举手。。。 对于R这种奇葩语言来说,不规范的定义绝对是阻止它应用的巨大障碍,大部分人只能是R User,而不是R Programer
require(pipeR)
rnorm(100000,mean=10,sd=1) %>>%
sample(.,size=length(.)0.2,replace=FALSE) %>%
abs %>%
log %|>%
(a -> diff(a)) %|>%
(a -> plot(a,col="red",type="l"))