星‏力手游总部,正儿八经来讲讲


· 超过23用户采纳过TA的回答

词人才孓█网.址 67 8a点vi p█太卡了,、正儿八经来讲讲求。还有些人把自己局限在一个狭小的范

你对这个回答的评价是?

下载百度知道APP抢鲜体验

使鼡百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

用于统计学分析整体来说R的package比Python專业一些。

如果之前两者都没有学过并且对学习程序语言没特别的兴趣,主要以数据分析的目的为导向那么直接上手R相对来说性价比高一些,因为这是一个一站式的解决方案虽然有些事情,比如数据的预处理Python做起来可能更顺手一些但是R也不是不能做,单独学会R已經足够做一个数据分析师了

关于统计的内容其他的答案已经有了介绍,这里就不多说了我这里主要阐述一下,为什么我认为初学者最恏直接上手R因为以一张白纸的态度来学习R某种意义上讲是一种优势。R这个语言从编写方式上比较函数式,从思考的方式上又接近Matlab也僦是所谓向量式的思考方式。从一开始就接受这两种思维方式有时候要比学了主流编程语言之后再回来学R更容易接受,甚至于少走弯路

先说向量式的思考方式。大部分的主流程序语言的思考方式是标量式的比如给一个数组,需要判断里面的每一个数字是不是大于0如果是就改成0,如果不是保持不变最直观的想法就是遍历原来数组的每一个数并判断这个数字是不是大于0,如果大于0则改成0如果小于0则鈈变。

这是典型的标量的思考方式但是R语言是为向量式的写法做过特别优化的,所以可以这么写:

执行的时候系统会自动的把vector展开,讓每个元素来和0对比同时生成新数组,完成赋值这个展开的过程是用C语言写的,要比我们在上式中纯粹用R来循环快很多我们同时把仩面两段运行10000次然后看R的处理时间,第一个需要0.301秒而第二个只需要0.093秒。

所以在R中尽量少用显式循环,用向量和矩阵的思维来思考:比洳说给定一个二维数据表df要找出其中id为『司马懿』的数据,如果用循环遍历就需要双重循环来填充一个新的空数据表,但是用向量的方式就只需要一行:

系统在后台会自动的对比生成对应的TRUE或者FALSE的布尔值,从而把数据表过滤成我们想要的结果

这就是为什么说一张白紙学习R反而可能有优势的原因,因为没有对for循环的潜意识的依赖反而可能更专注于统计本身,对这种向量式的思维方式和书写方式能够哽快的适应

其次,R的设计者深受LISP的影响在语义上是函数设计语言的变种。函数式编程的一大特点就是函数是first class citizen 函数本身就可以作为其怹函数的参数和返回值,并且可以在各个地方定义从输入开始,一个函数的输入就是另外一个函数的输出层层执行,最终自然的产生叻想要的输出有人说函数式编程优雅,这种审美的话题是仁者见仁智者见智,但是不得不说函数式的编程确实是更适合统计一些因為统计本质上就是输入——>处理——>输出的过程,就像面向对象的方式更适合编写图形界面一样

还是刚才那个例子,我们可以这么定义:

 

第一行定义了一个函数叫做modify接受一个参数x,如果大于0返回0如果小于0则不变。然后在第二行我们调用了一个函数sapply,这是R语言apply系列的函数是可以把某个函数应用到数据中的每个切片上。在这里面我们就把modify这个函数当作一个参数传递给了sapply函数。

如果想简练并且这么┅行的小函数懒得起一个名字,那么就可以一行解决问题:

不过遗憾的是这种方式清楚归清楚,但是没有速度优势我们运行上式10000次,系统需要0.442秒在apply家族的函数中,只有lapply是有速度优势的因为lapply运行的时候后台更多的是用C编写的代码来处理的。

拥有函数的数据被称为对象而拥有数据的函数被称为闭包。

R语言的函数式特性还体现在闭包上这也是很多面向对象的语言也喜欢加入的一个很好的函数式语言的特性。比如说我想设置一个幂乘函数正常来说,我们会这样:

这样power(2)我们就得到了4。但是如果以后我们想要三次方怎么办一个典型的莋法是搞两个参数:

但是用闭包的话,我们可以做的更灵活:

想计算平方没问题! 我们可以定义一个平方函数:

函数中引用了2和4这个自由變量,而我们可以把这个引用了2和4的函数继续当作一个函数来继续进行计算和传递

当然,Python也有闭包Python也有pandas可以做类似R中的数据表操作,泹是Python兼具面向对象和函数式的特点前者可能还多一些,所以初学的话可能会就此养成标量式的思考喜欢for循环遍历和面向对象式的编程習惯,再去学R是会有一点水土不服的。

总之两样都精通自然最好,函数式和面向对象并不是非此即彼的都掌握不光能够扩展知识面,还能够加深自己对程序设计的理解我认为最好的配合是用Python做数据预处理和多进程/线程管理,然后用Python rpy2程序包充当管道把数据输送给R利鼡R强大而专业的程序包来对数据进行分析和做图。

但是如果就要追求投入产出比用最小的投入来学习一门数据分析的语言以达到技能够鼡的水平,就统计学分析而言我推荐R胜过Python。

该楼层疑似违规已被系统折叠 

下┅幕大型翻车现场翻车

变巨战士丝血爬起来躲过了两次借机,手起刀落重击,主角猝

这里的教训是10体质不可取。

17+17<42所以主角死了。

都不会死但只有10体质的主角死了。

铁人重点注意事项:体质不可太低



我要回帖

更多关于 星 起名 的文章

 

随机推荐