人望山 鱼窥荷下一句

早在2009年, SAS的安妮·米尔利(Anne Milley)在《纽约时报》的一篇文章中就驳斥了R语言日益重要的意义( R语言的竞争对手包括SAS,Python,以及最近的Julia )。 她说:

“我们有为飞机制造发动机的客户。我很高兴他们乘坐飞机时没有使用免费软件。”

在许多读者表示愤慨之后,Milley在SAS网站上写了一篇后续博客文章 ,采取了更为外交的态度。 她为SAS辩称它是一种可以因其“支持,可靠性和验证”而受到重视的软件。 但是,最近的历史使得将专有软件与可靠性或功能性结合起来变得更加困难。

在开放源语言如何使诸如SAS之类的占主导地位的专有软件很大程度上无关紧要的情况下,R无疑提供了强有力的案例研究。 尽管很难量化R的用户群的规模,但一种有趣的流行度指标是其在学术期刊文章中的使用。 在该法院, R在2015年超过了SAS 。 此外,尽管这只是轶事,但有趣的是要注意到2017年关于Statistics subreddit的一个帖子,其中原始的发帖人想知道为什么SAS仍然大量存在。 为了解释普遍的React,公司仍然购买SAS,因为这是他们过去一直使用的,而且很难改变! 就像伍德罗·威尔逊(Woodrow Wilson)所说的那样:“如果想成为敌人,那就尝试改变一些东西。”

相反,有些开发人员和数据科学专业人员不想对功能进行任何让步。 他们想要用于分析的最佳工具,即使这意味着必须时不时地挖掘Stack Overflow。 对于他们来说,这里有R。它最初是一个统计计算环境,但由于添加了太多内容,现在可以将其归类为通用语言。

那Python呢?

ggplot2已移植到Python; Jupyter笔记本有支持R的实现; 和DataFrame在Python的类大熊猫库具有一种不可思议的概念相似性的data.frame在基R.类因此,现在是很不常见的用于数据科学家,使R和Python的之间的选择是考虑不同功能的。 此规则有例外,例如(对Python有利)和Python的全栈功能,(对R有利)Shiny(作为R库实现HTML和JavaScript API)实现了Web应用程序之间的无缝集成开发和R的能力。

相反, Python呢?” 要弄清楚R和Python之间的对比设计哲学,然后选择最符合您个人风格的设计哲学,就可以最好地回答这个问题。 两种语言之间最大的概念差异是Python偏爱只采用一种明显的方式来做某事( Python哲学中的一条规则),而不是R相信为程序员提供无限可能性并允许他们选择所需的方法的信念。 在R社区中,肯定没有与Python社区中使用“ Pythonic ”一词类似的东西。 R相信给程序员更多选择,而不是提倡有条理的方法。 虽然这当然是个人喜好问题,但我认为它使R比Python更紧密地与开源社区所秉持的价值观保持一致。

选择R的三个原因

归根结底,只要实用程序能够满足他们的需求,程序员就应该选择自己觉得最舒适的语言。 我喜欢R语法非常接近我的想法,这使我使用起来很舒服。 考虑这三个简单但说明性的示例。

  1. R的索引从1开始,而不是通常的0。 出于这个原因,我的一位同事甚至更喜欢Python而不是R。 但是,编程语言的重点是成为我们思维与1和0之间的中间人。 如果一种语言是更有效的“中间人”(例如,从1开始,以同样的方式进行计数),那么这有什么问题呢? 我通常会遵循以下约定,除非有充分的理由不这样做。

    R的索引方法的另一个好处是,您可以通过对子集使用负索引进行子集删除(这要求语言从大于零的内容开始进行索引),从而从向量中删除元素。 例如:

    > x = 1:5
    > print(x)
    [1]
    1 2 3 4 5
    > x = x[-3]
    > print(x)
    [1]
    1 2 4 5
  2. 基数R有四个不同的赋值运算符,每个赋值运算符在操作顺序上具有不同的排名。 以下四个语句均产生相同的效果:
    assign('x', sqrt(pi))
    x = sqrt(pi)
    x <- sqrt(pi)
    sqrt(pi) -> x
     

    上面的第三个运算符(称为“向左赋值”)是最常见的,如果大多数R程序员(出于习惯)仅使用它,我也不会感到惊讶。 我发现将所有这些可用都很有用,因为我认为某些选项更适合表达我如何形成某些想法。 同样,第一个可选参数, assign()函数可以显式指定在哪个环境/名称空间中存储新变量。 此外,R具有超级赋值运算符<<-->> (分别平行于向左和向右赋值),这些变量允许全局存储变量,甚至在嵌套函数或结构内部。 (这也可以通过assign()函数来完成。)

  1. 我认为R在轻松实现列表理解方面胜过其他所有语言,即使这通常被吹捧为Python的卖点。 R中的几种列表理解方法之一是“ apply ”函数族,它提供了一种功能丰富的方法来跨向量或列表应用函数(即,R等效于C结构)。 还有一种基于R的“回收”约定的更简单方法,该方法要求即使声明一个函数仅具有一个输入元素,也可以将整个矢量传递给该函数,并且将在每个函数处对函数进行求值。向量的元素。 例如,factorial()函数被定义为仅接受输入的一个元素,但是您仍然可以将其用作:

    > factorial(1:9)
    [1]
    1      2      6     24    120    720   5040  40320 362880
    
    


    尽管“应用”功能最初被认为是R中的细微差别,但它们无意间鼓励R程序员以尴尬的并行方式设置其计算。 因此,R社区自然开发了用于并行和GPU计算的库。

通过这些以及许多其他方式,R对开放源代码哲学的拥护使它成为一种利基但不断发展的语言,其功能可以与任何其他高级解释语言相媲美。


Samuel Lurie 将于 今年3月8日至11日在加利福尼亚州帕萨迪纳市的SCaLE16x 上展示 R的亮点 要参加并获得50%的门票,请使用促销代码OSDC进行 注册 。

翻译自: https://opensource.com/article/18/3/r-programming-features

人望山 鱼窥荷下一句

人望山 鱼窥荷下一句_一窥R反文化相关推荐

  1. 儿知错父之过下一句_谚语父之过的上一句是什么,“子不孝父之过”的下半句是什么?...

    "子不孝父之过"的下半句是什么? "子不孝2113父之过"的下半句是:"教5261不严,师之惰". 出自<4102三字经>,节选 ...

  2. 儿知错父之过下一句_谚语父之过的上一句,《三字经》“养不教,父之过”下句是什么?...

    <三字经>"养不教,父之过"下句是什么? 教不严,2113师之惰. 写父子之间的默契,和谚语.列:"子不教.父之过".等等谚语. 君君臣臣,父父子子 ...

  3. 儿知错父之过下一句_第034章 子不教,父之过

    阅书阁『wWw.yshuge.Com』,為您提供精彩小說閱讀[.],! "此事跟那群下人有什么关系,我不准你这样对他们."风如雪反驳道. 风崇礼看着眼前这个桀骜不驯.气焰嚣张的长女 ...

  4. 出场顺序很重要下一句_爆笑笑话:人生中遇见的每一个东西,出场顺序真的很重要……...

    1 人生中遇见的每一个东西,出场顺序真的很重要,抹完护手霜之后短时间内是打不开润唇膏的. 2 我戒烟了,我哥们的老婆也要求我哥们戒烟.一天,我跟我哥们正走着,碰到他老婆.他老婆:"你又带烟了 ...

  5. 儿知错父之过下一句_秦始皇:我儿知错了吗?

    咸阳之中. 如今的咸阳宫内,嬴政自从王翦出发后就一直心中牵挂. 而当现在时间已经过了一个日夜后,此刻的嬴政在面对扶苏生母郑夫人时. 大秦的君王,这一刻和一个普通的父亲并没有什么两样,眼中几乎都是对自己 ...

  6. 出场顺序很重要下一句_人生的出场顺序真的很重要

    ▼ 想陪你 | 到最后 ⊰  主播 :喵姐  ⊱ 电影<2046>里有一句经典台词:" 爱情这东西,时间很关键,认识得太早或太晚,都不行. " 1 周末和朋友去公园散步 ...

  7. 出场顺序很重要下一句_人生如戏,出场顺序很重要:再见,不负遇见

    01. 前段时间,<年少有为>火遍了所有的社交圈. 李荣浩淡淡沙哑的嗓音唱出了很多人的心声,看到评论下有一个人留言: "我注定无法成为你的伴侣,与你同行.在我们眼所能见耳所能听的 ...

  8. 儿知错父之过下一句_第十七章 儿之责父之过

    凌九卿回的义正言辞:"本君还能搞什么,按公主所愿除妖鸡罢了."又把中间窝酱香味小黑鸡抱入怀中,颔首时,修长的手指轻柔的抚摸小黑鸡脖子上的毛,看都不看墨染一眼. 风迎蜷缩在凌九卿怀里 ...

  9. 出场顺序很重要下一句_霍建华马思纯虐恋:人生的出场顺序真得很重要

    1 霍建华和马思纯又双叒叕合作了! ​这一次,两人重回校园时光,演绎了一个关于"青春和遗憾"的故事. 昨天,在电影<大约在冬季>的首映礼上,很多明星都受邀到场. 观影之 ...

  10. python文本文件操作诗句给上一句输出下一句_[Python] 自动化办公 定制微信每日一句诗...

    转载请注明:陈熹 chenx6542@foxmail.com (简书号:半为花间酒) 若公众号内转载请联系公众号:早起Python 这篇文章能学到的主要内容: 利用"喵提醒"推送消 ...

最新文章

  1. Linux 802.11 Driver Developer’s Guide
  2. go interface 转int_大神是如何学习 Go 语言之反射的实现原理
  3. 高成长公司诚聘Web平台开发工程师(Leader)
  4. python基础之删除文件及删除目录的方法
  5. 蓝桥杯 单点最短路径问题
  6. Windows下用vs2017编译和配置libcurl库(手把手教,适合新人)
  7. 为什么要使用 JavaScript
  8. 当当网推“搜索+个性化”
  9. creator 生成bmfont字体文件
  10. Scratch软件安装的详细步骤
  11. MYSQL间隙锁详解
  12. Linux PostgreSQL离线下载与安装
  13. 中高端时代趁势而来,本就艰难的酒店企业如何顺势而为
  14. amap高德地图应用(el-amap-marker坐标点;el-amap-info-window信息窗体;el-amap-polyline折线、折线颜色,宽度、实虚线等)
  15. EasyExcel 实现批量合并单元格(支持自定义)
  16. Java编程序哥德巴赫猜想
  17. PHP设计模式(二):工厂方法模式
  18. 互联网晚报 | 9月5日| 四川甘孜州泸定县发生 6.8 级地震;​西北工业大学遭美国国安局网络攻击;苹果已考虑移除SIM卡插槽...
  19. Leave-one-out——留一法
  20. c++实现求众数及其重数

热门文章

  1. office word 页码从任意页开始
  2. word在任意页开始添加页码
  3. 【可视化分析】雷达图
  4. ubuntu 20.04安装RTL8821CE无线网卡驱动
  5. android camera预览翻转,android camera yuv帧水平翻转实例
  6. 使用LSTM神经网络+CTC loss识别freetype库生成的不定长验证码
  7. 2020年中国医药冷链物流行业市场现状分析,行业步入发展快车道「图」
  8. 算法渐近性质分析_神奇宝贝解释的渐近分析:深入研究复杂性分析
  9. html refresh原理,HTML meta refresh 刷新与跳转(重定向)页面
  10. IntelliJ IDEA 自定义注释作者名字