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