很多人无编程经验,但是出于对学术的研究,需要用些辅助工具用于数据分析和作图不错。很多网上有人说学R有人说学Python。
Python在很多人口中无所不能,比如说编写一些自动化程序、黑别人网站、做游戏外挂之类那么,Python真的那么神奇吗?
![45792cd844f39b1d161419c93ae3c003.png](https://i-blog.csdnimg.cn/blog_migrate/e9ece70350fcdb48d4aed5cd2bcd848e.jpeg)
首先,两种语言都能做胶水语言的工作没有疑问
描述:Python事实上应用范围更为广泛,而R语言一定程度上被局限在了数据处理、数据分析、数据挖掘领域。我认为可能有下列原因:
首先,R作为一个想要继承S语言的遗产的语言,它一定程度上应该也继承了S的语法(不过我确实不了解S语言),这就导致它的许多表示对于熟悉了C/C++/Java这一系统语言的程序员感到许多不适。比如:赋值符号会是「<-」(虽然通常来说用「=」);而原本应该是属性访问的「.」居然可以作为变量名的一部分,类似的功能要用「」完成(比如Python中的data["salary"]或data.salary到了R里面会是data」完成(比如Python中的data["salary"]或data.salary到了R里面会是data」完成(比如Python中的data["salary"]或data.salary到了R里面会是datasalary),还有比如数组用「c()」表示。虽然这并不是语言设计的问题,但我确实很不喜欢这种不适感。
![6a25c05276cb2fe3b21165a0b9d34c1d.png](https://i-blog.csdnimg.cn/blog_migrate/dfd9ca0e71e269fc41e499135739391b.jpeg)
语法设计方面上,还有一个因素就是各种函数名缩写的一致性上。R嘛,可能也是有历史包袱的原因,非常的混乱,总是给人像MATLAB那样各种夸张、毫无限制的感觉。比如有的就是把单词的几个辅音拿来缩写,把几个单词首字母拿来缩写(比如nnls这样缩写non-negativeleastsquares),这样无论从可读性上、函数名的猜测上基本上非常难(可能是科研人员偷懒的通病,误)。这方面Python作为一个给有洁癖的人设计的语言(误),就会好很多。
另外也要看轮子的状况。Python有那个pip(PythonPackageIndex)等几个仓库,R语言有它那个可怕的CRAN(TheComprehensiveRArchiveNetwork)(明显CRAN这个名字起得更吓人一些,而且另外能自称ComprehensiveArchiveNetwork的只有Perl的CPAN和TeX的CTAN了,都是什么怪兽的量级的东西了),但轮子的方向其实很明显,Python的轮子的方向更为多样,而R语言的轮子会更多得围绕数据统计分析方面。
然后从数据模型本身而言,Python会是有「list」、「dict」这一类,传统意义上的编程模型,受经典编程训练的人就会用着比较爽吧,而响应的,R里面可能会强调「dataframe」数据帧这些(或者有时候是「datatable」,这个记不清了),给统计人员用起来更舒服吧。
![fbe75f71e26b596dd3d27501223a6f76.png](https://i-blog.csdnimg.cn/blog_migrate/ba0b39f231ee5f56c4e845437b8d4f09.png)
互联网疯狂发展的这十年来年,Python在几家互联网公司的主推之下不可谓不是大红大紫如日中天。不过这几年来R乘着数据挖掘的东风,总给人一种东山再起的感觉。君不见微软在这几年开发者大会上也有提到R方面的东西。
个人感觉R给人的感觉和Perl更像一点,做某些事情非常好,但是以牺牲一部分东西作为代价的前者主推统计领域,后者更具备泛用性。而Python是仔细权衡了这种代价而清理过的Perl的。
R加上ggplot2以及其他绘图包能做的事情大多Python或者搭配上numpy、scipy、matplotlib也能做,但做的风格如何,优不优雅的话就不好说了。个人更喜欢Python因为自己整体上更熟悉。所以具体怎么选还是看自己!