用 R 语言打个印咋就这么费事儿呢
1. 引子
前两天还说 R 语言不是不好,(只是不适合咱用)[],今天就想收回这话了。这货用着也太别扭了,一个最简单的可视化差点憋死我。
就像马保国,名气大,实则很完蛋。
2. 问题
比如一个最简单的 csv,想打印成 Bar Plot。数据长的像下面这样
skillsnumbermachine learning7255communication skill2970fast pace1672software develop1356track record1079deep learning1065project management1047natural language958data mining939written communication926
再简单不过的一个表格,想按照上面顺序打印出来。于是导入以后调用 ggplot2 开始可视化
但就这么简单个东西,问题就出来了,打印结果如下
不对吖,不应该是按照我数据的顺序打印么?这算怎么回事儿?仔细一看,丫的自作主张给我按照字母顺序排序打印了。
自作多情。谁稀罕你的排序啊。我就纳闷了,有多少次我们打印会按照字母顺序?直接按我原始数据指定的打印不好么?看 Python 多听话
结果
3. 分析
上网搜了一下,有的文章说是因为 dataframe 把 categorical data 转换成了 factor,然后按照 factor 的 order 打印的。那我们把 factor 转换成 vector 是不是就可以了?
试试
很遗憾,结果和之前一模一样
所以,应该是 R 在处理坐标轴排序的时候就是用的字母顺序,和 factor 还是 vector 没有关系。这个设计真是脑残。
既然想保持固定顺序,我们最后还是得回到能排序的东西上来。仔细看了看各种数据类型,也还是得靠 facto。不管是它的 level 属性,还是它的 ordered 属性,都是指定顺序的。指定 level 的时候,需要重新修改一下原来的 column
这回终于一切正常了
4. 总结
这两天用 R,各方面都很怪异。作为被 Python 惯坏的东哥,实在有点伺候不了这个性格怪异的家伙。
上网大致搜了一下,R 第一版发布于 1993 年,前驱的 S 语言则发布于 1976 年,算是上古语言了。Python 则发布于 1990 年,没有前驱语言;其计算包 NumPy 发布于 1995 年,分析包 pandas 发布于 2008 年。
这就是先发优势吧。虽然 Python 优雅简洁,奈何 R 语言已经在统计和科学计算方面有了统治级别的地位。想一时半会儿取而代之,还是颇有难度。尤其在学界。
但我是真有点受够她了。人生苦短,我为啥不用 Python。
5. 交流
独学而无友则孤陋寡闻。现有「数据与统计科学」微信交流群,内有数据行业资深从业人员、海外博士、硕士等,欢迎对数据科学、数据分析、机器学习、人工智能有兴趣的朋友加入,一起学习讨论。
大家可以扫描下面二维码,添加荔姐微信邀请加入,暗号:机器学习加群。
Lily
6. 扩展
6.1. 参考文献
Dr. P. Prakash 和 A. S. K. Rao, R Data Structures and Algorithms. 2016.
H. Wickham 和 G. Grolemund, R for data science: import, tidy, transform, visualize, and model data, First edition. Sebastopol, CA: O’Reilly, 2016.
Data2Science
本文使用 mdnice 排版
版权声明: 本文为 InfoQ 作者【张利东】的原创文章。
原文链接:【http://xie.infoq.cn/article/4c5352ba521119bf945aef5ae】。文章转载请联系作者。
评论