R 语言和 Matlab 相比各有啥优缺点

# 28/04/2019 更新 -------------------------------------------------------R 的表情包更多!!!
R 语言和 Matlab 相比各有啥优缺点

Credit: R Memes for Statistical Fiends Twitter: @rstatsmemes
R 里面的memer package, meme package 和其他可能存在的我不知道的package就是专门用来做表情包的!!
【R 语言和 Matlab 相比各有啥优缺点】 R 语言和 Matlab 相比各有啥优缺点

Matlab 表情包能比吗!!
R 语言和 Matlab 相比各有啥优缺点


# Initial commit ---------------------------------------------------------作为一个真实的R吹,我决定写一条夸R的回答。。。其实只是描述我在用R的过程中觉得R比较出色的地方,不是一个很正经学术的比较。而且因为我对Matlab的了解并没有那么多,如果在某一方面MatLab反而更出色,请在评论里把这个事实温柔地摔在我脸上。
免费不免费在我看来不用拿来当作优缺点来讨论,因为如果在多种语言或者软件之间有选择的余地的话,哪怕是付费的那个价格也实在称不上是个多大的障碍。所以我大概想说的有以下几个方面
R和其他语言之间的联系R的开源R的前沿性干什么事都能用R之前很多人说到的速度问题,R的确很慢,是因为当初R被设计出来的时候目的是提供更容易地做数据分析的方式,而不是让电脑运算更快。但是如果要用R的话,就不是冲着他的速度去的,而是冲着他的其他方面去的。
虽然R在很多方面速度比不上其他语言,但是有很多方法可以增加效率,达到“足够快”,比如有现成的package可以提供多线程计算。
如果我真的在某一个问题上很要求速度的话,都是直接写一个C或者C++然后连一个interface到R里边去的。C这么原始的语言总比Matlab快了吧。。。(大概?)有兴趣的可以参考Hadley的书关于performance的部分。
http://adv-r.had.co.nz/Performance.html这是R其中的一个优点,可以在不同的语言之间很轻易地来回引用。很多很基础的R命令和package都进一步使用了C,C++或Fortran。如果已经在某种语言中有现成的文本,就可以在R里边轻松执行,据我所知在MatLab里想实现这个好像相当麻烦。
R是开源的。这个大家都知道,但是如果只需要运用现成的功能进行运算的话好像开不开源也没有什么区别。作为半个码农的我前两天一直在忙的工作是把一个Matlab中实现的软件在R里边写出来类似的解决方法, 那么自然我需要看Matlab的一些基础命令的源代码,然后我就傻眼了。
虽然自己一直知道R是开源的Matlab不是,但是平时一直在跟R打交道,遇到问题一层一层翻下去总是能看到源代码,习惯了这个之后突然发现没办法搞清楚Matlab中的基础的思路和想法还是有点震惊的。
我还用了一个似乎很高大上的词来描述R,“前沿性”。之所以这么说是因为很多最新的研究成果在R里已经有包可以实现。截止到写这条回答的18年十月8号,CRAN上现存的13143个package不是吹的(来源),这还不包括不在CRAN上,而是在GitHub等很多渠道中可以使用的package。
也就是说,一个人能想得到的所有算法基本上都在R里边有相应的解决方案。除此以外,很多新发表的论文都会有一个R的package作为副产品同步问世,想要使用这篇文章里的算法只要去下载那个package就可以了,如果想reproduce(复现?)这篇文章就按着代码一行一行跑就行了,如此容易。
最后,我想说我干什么事情都用R,是真的干所有事情都用R。因为Rmarkdown的存在,我写报告用R,写论文用R (package-bookdown), 写网页用R (package-blogdown),写课件用R (package-xaringan),偶尔抓个网页用R,代码本身和代码运行的结果,包括各种可交互的2D图3D图都能直接包含在我写的报告/论文/网页/课件里, 妈妈再也不用担心我的计算结果导出来看着一团糟。(话说这几个package都是Yihui大神写的,真是多谢多谢)


推荐阅读