王承志的个人博客分享 http://blog.sciencenet.cn/u/pkucarer4300 穷人的孩子早当科学家

博文

R语言中一些脑残函数的简化

已有 411 次阅读 2019-4-19 15:58 |个人分类:学习笔记|系统分类:科研笔记| R语言, 编程, 维克汉姆, 谢益辉, 函数

因工作需要,最近又捡起了R语言写了点代码。


不过,因过长时间没有用R,使用的时候发现了很多别扭的函数。最后实在忍无可忍,只能重新定义了这些函数。


比如,简单查看对象。R的函数为View()。我百思不得其解,为什么一定要大写V???这每次都要shift,不会嫌烦?函数名小写这应该是编程语言的共识了,不然你用Print试试?


解决的方法也简单:


view <- function(input){return(View(input))}


这样,就可以view()了。


再如,输入一个向量:


sample.vector <- c("第一个数值","第二个数值","第三个数值","第四个数值")


好吧,每个值我都要加两个“”,当我的值有几十个的时候......


砸键盘.jpg


于是,定义了一个函数:

separate <- function(input){

  input <- gsub("\\s+", "", input)

  output <- unlist(strsplit(input, split = ","))

  return(output)

}


于是,可以这样输入向量了:


sample.vector <- separate( “第一个数值 , 第二个数值, 第三个数值, 第四个数值”)


当然了,这点小伎俩也不是什么新创造。当年,维克汉姆大神就对R立面各种脑残的函数大为不满,然后创造了tidyverse的各种包。


比如,在数据框里选择符合条件的行:


new.df <- original.df[which(original.df$line.you.want == some.pattern), ]


这里,一个简单操作,数据框的名字original.df却需要写两次!!!这种事在R里面可多了去了。


看看大神的解决方案:


new.df <- original.df %>% filter(line.you.want == some.pattern)


这是多么的简洁!!!


讲真,要不是tidyverse,谁特么爱用R处理数据。据谢神说,搞R的那帮老教授们对维克汉姆各种仇恨。也是,辛辛苦苦搞出来的东西被后辈轻轻挥一挥衣袖,说:“不要误会,我不是针对谁,我是说,在座的各位都是垃圾。”,任谁也不会好过吧。



http://blog.sciencenet.cn/blog-464637-1174316.html

上一篇:抗肿瘤的“逆天病毒”和跑火车的“逆天编辑”

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备14006957 )

GMT+8, 2019-6-18 17:07

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部