R SUCKS!

恶心得一逼

本来我并没有什么计划去学R或者用R来做分析,但是统计学专业好几门课的老师都是以R为核心讲的,自己也用过R的线性回归之类的功能来做分析。但是今天做一个要用R的可视化的作业真的恶心死我。

为什么我讨厌R

本来我是写Python的,然后又学习了Kotlin,现在尤其注重代码规范和可读性,就算是写个小脚本也好,至少我要把注释写上去。

代码没规范,用户瞎几把写

先说代码规范方面的问题,Python的IDE支持非常强:Visual Studio、Eclipse、PyCharm,其中PyCharm我是从高中用到现在的IDE,代码提示、代码格式化各种支持都非常完善。R在开发工具方面拿什么来跟Python比?现在就只有一个R for Visual Studio能战,RStudio只能算是够用,R Gui连ipython都比不过,就是一个普通REPL。

然后是格式,有人笑写Python需要用游标卡尺,因为不同的缩进影响很大,有些人要素觉得Python不友好别怪Python,怪你自己不选择一个合适的IDE。但是来到R里面,和Java的某些不规范写法一样,if或者for循环的花括号居然能直接omit掉,然后赋值语法居然有“<-”和“=”,虽然一些正规的书里都不建议用后者,但是我觉得这是R在设计上的不一致,是引起潜在麻烦的源头。引用些别人文章的例子:

1
2
3
4
5
6
7
length(x = y <- 1:10)
c(a = 1, b <- 2) # 本来应该是c(a = 1, b = 2)
x>5
x<3
x<-3

第一行代码,本意是先赋值再传参,用一行代码完成两行代码的工作,但是这种语法本来就是增加潜在问题出现的可能性。

第三行,带来副作用,且不容易被察觉(赋值不会报错)。

最后一行,假如本来你要比较x与-3,但是忘了空格,就变成了把-3赋值给x,如果你的x是dataframe之类的东西,然后又没及时发现,后面带来的问题将引起非常恶心的问题。

虽然上述问题在Visual Studio里能稍微减轻(比如美化代码),但是本来用R的人里面会用Visual Studio来写的人就不多吧?连个类似PEP8的标准都没有的R,只靠那群不擅长编程、不懂得规范化的用户怎么能让R变得具有可读性?我已经见过些写得像屎一样的R代码:不同逻辑块的代码不空一行再写、符号后不空一格、写了等于没写的注释……我真的忍够了那些不规范的代码。

然后是Kotlin,Kotlin相比Java简洁了很多,合理使用语法糖和FP能让代码读起来像自然语言,同样,我在写Py的时候,也是尽量把代码写得直观易读,然而这种观念在很多R用户里并没有任何概念。

这里贴zen of python的部分内容,另有翻译版

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.

我就想问,有多少个写R甚至是写其他语言的人能做到上面的内容,然而很多人的代码都是implicit、nested、dense. Zen of Python 不仅仅适用于Python,还适用于其他任意一种语言——如果你想写出自己或别人能读得懂代码的话。

地雷般的第三方库

警告!不熟悉、非核心的第三方库别用。就算是核心库,能把文档写好、能看得懂的库也没几个,example?Read the FUCKING Manual!毕竟

R是自由软件,不带任何担保。

那么库也一样。

无论是Visual Studio或者RStudio都可以用help来查询函数对应的文档,但是你妈的,库的作者能写好点吗?参数描述不清不楚、例子无一丁点注释、甚至no fucking examples.

更牛逼的是,你拿某些地雷去google,你查不到一丁点有用的信息,甚至搜出来的是Matlab当中类似的东西。文档看不懂,自然要找examples,然而examples也没几个!

不优雅,look so shitty

说不出话,就是ugly

结论

优势是:R是由统计学家开发的;
劣势是:R是由统计学家开发的。

R的确在统计学中走得非常前,Python还是很难追得上,但是抛开高深的统计研究工作,只单纯做点分析,Python也不是做不了,但是我真的被R的缺点恶心死了,以后的分析基本只围绕Excel、Py和PostgreSQL,除非有些东西只能用R做,否则还是算了吧,R滚粗。

Powered by Hexo and Hexo-theme-hiker

Copyright © 2017 - 2020 HOCHIKONG's WAPORIZer All Rights Reserved.

访客数 : | 访问量 :