在编程实现的时候有时会碰到对数值取整的需求,而取整的方式却多种多样,依赖于具体问题,不过在R中已经配备了种类齐全的相关函数。
主要包括以下五种:floor():向下取整;ceiling(): 向上取整;round(): 四舍五入取整;turnc(): 向0取整;signif(): 保留给定位数的精度。
R是S(Splus)的开源版本,或者下一代。发源地在新西兰奥克兰。这个软件的统计背景很浓烈。我这里浓烈的意思是,如果你不熟习统计知识(历史)的话,R的帮助文档看起来是很累的。由统计背景的人开发。R的维护组叫CRAN-R。在生物信息方便,有个叫bioconductor的组织,里面有很多生物信息方面可以用的软件包,他们有一套自己维护package系统。
Python是个综合语言(这里特指指CPython解释器),numpy scipy是数值计算的扩展包,pandas是主要用来做数据处理(numpy依赖),sympy做符号计算(类似mathemaTIca?)此外还有一些不太成熟的包如sciki learn,staTIsTIcal models。成熟度不如R。但是已经到了可用的水平了。是读计算机的人写的统计包。ipython 更新到1.0以后,功能基本完善,其notebook非常强大(感觉就像mathemaTIca)而且还是基于web,在合作分享方面非常好用。
性能:
大家都说R慢,特别是CS的人。其实这里主要是两点:一个R里面数组的调用都是用复制的,二是Rscript慢。三是处理大数据慢。如果R用的好的话,R是不太慢的。具体来说就是Rscript用的少,多用命令,跑点小数据。这样的话,实际在跑的都是背后的fortran和C库。他们都有快二三十年历史了。可谓异常可靠,优化得不能再优化了(指单线程,如果去看源代码挥发先许多莫名的常数,永用了以后精度高速度快!)。比如一个自己编写一个R脚本,loop套loop的那种,那真是想死的心都会有。外加一点,R处理文本文件很慢!
Python归根揭底还是个有解释器的脚本语言,而且有致命伤——GIL,但python最难能可贵的就是它很容易变得更快。比如pypy,cython,或者直接ctypes挂C库。纯python写个原型,然后就开是不断的profiling和加速吧。很轻易可以达到和C一个数量级的速度,但是写程序、调试的时间少了很多。
并行计算:
R v15 之后有了自带的parallel包,用挺轻松的。不过其实就是不停的fork,或者mpi,内存消耗挺厉害的。parSapply,parApply什么的,真是很好用。
Python虽然有GIL——并行计算的死敌,但是有multiprocessing(fork依赖) ,是可以共享数据的什么的,估计内存消耗方面比R好点,数据零散的话overhead很多。到了MPI的话,mpi4py还是挺好用的。用cython的话结合openmp可以打破GIL,但是过程中不能调用python的对象。
学习曲线:假设什么编程都不会的同学。
R一开始还是很容易上手的,查到基本的命令,包,直接print一下就有结果了。但是如果要自己写算法、优化性能的时候,学习难度陡增。
Python么,挺好学的,绝大多数的帮助文档都比R好了许多。有些包用起来没R方便。总的来说深入吼R陡。
扩展资源:
基本上新的统计方法都会有R的package,安装实用都不麻烦。但是基本上都是搞统计的人写的计算机包。所以效能上可能有问好。比较出名的有两个包的管理网站,cran-r 和bioconductor。 所以搞生化的估计R用起来很方便。
python的统计计算包们比R少,多很年轻,还在不断的开发中。优于是计算机人写的统计包,用起来的时候要多涨个心眼。
画图:
R自带的那些工具就挺好用了,然后还有ggplot这种非常优美的得力工具。
python 有matplotlib,画出来效果感觉比R自带的好一些些,而且界面基于QT,跨平台支持。可能是R用得多了,pyplot用起来还是不太顺手,觉得其各个组建的统一性不高。
IDE:
Rstudio非常不错,提供类matlab环境。(用过vim-r-plugin,用过emacs + ess现在用vim。)
windows 下有python(x,y) 还有许多商业的工具。(本人现在的emacs环境还不是很顺手~)
建议:
如果只是处理(小)数据的,用R。结果更可靠,速度可以接受,上手方便,多有现成的命令、程序可以用。
要自己搞个算法、处理大数据、计算量大的,用python。开发效率高,一切尽在掌握。
ps:盲目地用R的包比盲目的地用python的包要更安全。起码R会把你指向一篇论文,而python只是指向一堆代码。R出问题了还有论文作者、审稿人陪葬。
python和r语言的区别对比网上有很多关于数据科学到底该用哪个,哪个到底好,谁更有前途的文章,一搜一大把。但我还是要写一下我的观点:
分析比较这两种语言到底哪个好,得看你的用途。比如我只需要分析数据,即导入数据,分析数据,可视化,那按理说R语言确实很占优势。如果想在学习工作之外再将编程语言应用的话,毫无疑问python更占优势,有句话是这么说的“人生苦短,请用python”。
单就数据分析对比,我认为R的优势有:1、学习先易后难,不会把小白们吓掉;
2、数据科学的包特别多
3、可视化特别吊
R的缺点也不少:
1、R经常更新,更新后经常不支持之前你安装的包;我电脑里安装了10+个R的版本,不停的切换
2、R语言的包、函数名起的很随意,看名字不知道是干什么用的,记不起名字如何让小白使用啊。
3、R语言社区人少,遇到问题你只能自己解决
4、即使有RStudio,写代码还是不方便
下面再说下python,优点:1、是一门看的懂的,说人话的语言。库名、函数名都很好理解记忆,而且你看别人写的代码基本知道这代码的意思,不信你试试。
2、数据获取占优势,数据分析第一步是数据获取,现在人文社科很多数据需要网上抓取,不过就抓数据而言,python更占优势。各种教程,代码,网上一大片。
3、社区人数特别多,基本你遇到的问题都能找到
python的缺点:
1、学习起来,开头很难,学习曲线与R正好相反。
2、公平起见,我还是写上,python的数据分析库不如R多
3、可视化不如R
最关键的是R的收集数据这方面,网上特别少,搜有关R爬虫的也很少。
于是我五月份开始转头学python,而且我是一开始就学python3,坚持选择有前途的版本,坚持。目前我已经可以用python爬数据了。
综合下,建议大家学习python,语言通俗易懂,功能强大,越来越简单。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)