For faster navigation, this Iframe is preloading the Wikiwand page for R语言.

R语言

维基百科,自由的百科全书

R
R logo.svg
编程范型多重编程范型阵列式面向对象函数式反射式指令式[1]过程式[2]
设计者罗斯·伊哈卡罗伯特·杰特曼
实现者R核心开发小组
发行时间1993年8月,​29年前​(1993-08
稳定版本
4.2.1[3]
(2022年6月23日,50天前 )
类型系统动态类型[4]
文件扩展名
网站www.r-project.org 编辑维基数据链接
启发语言
SSchemeLisp
影响语言
Julia[7]

R语言是一种自由软件编程语言与操作环境,主要用于统计分析、绘图以及数据挖掘。R本来由来自新西兰奥克兰大学的统计学家罗斯·伊哈卡罗伯特·杰特曼开发,现在由R核心小组负责开发,同时也有其他用户编写了诸多外挂的软件包。R以S语言为基础,其语法来自Scheme。R的后台程序大多由C语言FORTRAN语言和R自己写成。[8]

R语言是GNU计划的一个项目,所以其原始码可自由下载使用。R也有已编译的可执行文件版本可以下载,可在多种平台下运行,包括UNIX(也包括FreeBSDLinux)、WindowsMacOS[8]R可以以命令行操作,[8]同时有人开发了几种图形用户界面,其中包括RStudio[8]Jupyter[9]

在TIOBE2022年1月对编程语言人气的排名中,R排名第12。[10]

发展历程

R语言以S语言为基础,增加了Scheme语言中词法作用域这一机制,使程序员得以将代码中某一对象的适用范围限制到一小段代码之中。[1]S由里克·贝克尔、约翰·钱伯斯英语John Chambers (statistician)、道格·邓恩、琼·麦克雷、以及朱迪·席林于1976年前后于贝尔实验室发明。[11]S是一种用于数据分析的解释型语言,无需编译器即可运行。通常用S语言编写的代码都可以不作修改地在R环境下运行。[12]Scheme是Lisp语言的一个分支,[13]杰拉尔德·J·萨斯曼小盖伊·L·斯蒂尔于1975年前后在麻省理工学院发明。[14]

1991年,新西兰奥克兰大学的统计学家罗斯·伊哈卡和罗伯特·杰特曼开始对S语言的一个新版本进行开发。[15]伊哈卡与杰特曼两人名前缀字母都是R,R语言因此得名。同时,R这个单一字母的名字也表明R语言与S语言一脉相承。[8]1993年8月,伊哈卡与杰特曼在数据平台StatLib和邮件列表s-news中发布了R的早期版本。1995年,在统计学家马丁·梅克勒的建议下,伊哈卡与杰特曼通过GNU通用公共许可证把R做成了一款免费开源软件。软件于1995年6月进行了首次官方发布。[16]首个稳定测试版本(1.0)于2000年2月29日发布。[17]

R综合文件网(Comprehensive R Archive Network;CRAN)于1997年4月23日正式上线。CRAN除了收藏了R的可执行文件下载版、原始码和帮助文档,也收录了各种用户撰写的软件包。CRAN最早有3个镜像以及12个软件包。[18]截止2022年1月,CRAN有101个镜像站[19]以及18728个软件包。[20]

同样在1997年,R核心小组正式成立,以进一步对R语言进行开发。截止2022年1月,小组成员包括伊哈卡、杰特曼、钱伯斯以及梅克勒,同时也包括了统计学家库尔特·奥尔尼克英语Kurt Hornik、道格拉斯·贝茨、彼得·达尔高英语Peter Dalgaard卢克·蒂尔尼英语Luke Tierney、弗里德里希·莱施、托马斯·拉姆利英语Thomas Lumley、邓肯·坦普尔·朗、迈克尔·劳伦斯、乌韦·利格斯、布莱恩·里普利、塞巴斯蒂安·迈耶、保罗·默雷尔、马丁·普卢默、迪伊潘·萨卡尔、西蒙·乌尔巴内克以及电脑科学家托马斯·卡利贝拉。[8]小组过去的成员包括塞思·福尔肯、圭多·马萨罗托、邓肯·默多克、马丁·摩根、海纳·施瓦特以及斯特凡诺·雅各斯。[21]2003年4月[22],一个名为R基金会的非盈利组织正式成立,为的是更好地对R语言的开发提供支持。[8]

内置功能

R主要用于数据分析。在R语言中,用于信息存储的数据结构包括向量数组列表以及数据框。向量指一组带有固定顺序, 数据类型唯一的字符串或数值,其内容可以填写到一维或多维的数组之中。二维数组也叫做矩阵[23]R支持各种数组运算,与自由软件GNU Octave和商业软件MATLAB的功能有所重叠。[24][25]列表指一组数据类型可能有所不同的对象。一个字符串向量与数值向量合在一起就可以成为一个列表。数据框本质上是一个列表,里面包含了一个或多个长度相同的向量。数据框将这些向量合并成表格,每一行都有一个单一的名称。[23]标量这一数据类型在R语言中并不存在,所谓的标量就是一个长度为一的向量。[26]

用户可以用R来进行一些基本的统计检验,构建线性及非线性的模型,对时间序列加以分析,或对数据进行分类与聚类分析。R的另一强项是绘图功能,画出的图表能够达到专业出版物的要求,也可加入数学符号。计算强度较大时,用户可在程序中嵌入C、C++以及FORTRAN语言以帮助运算。[27]

因为S的血缘,R比其他统计学或数学专用的编程语言有更强的面向对象(面向对象程序设计, S3, S4等)功能。

R的功能能够透过由用户撰写的包(Packages)增强。增加的功能有特殊的统计技术、绘图功能,以及编程接口和数据输出/输入功能。这些软件包是由R语言、LaTeXJava及最常用C语言Fortran撰写。下载的可执行文件版本会连同一批核心功能的软件包,而根据CRAN纪录有一万多种不同的软件包。其中有几款较为常用,例如用于经济计量、财经分析、人文科学与社会科学研究以及人工智慧[28]

发展

生物信息学社群时常使用R进行分子生物学数据分析。Bioconductor英语Bioconductor计划就是让R作为基因图谱分析工具。 Gnumeric开发者正和R开发者合作,改善Gnumeric计算结果的精确度。[29]

R新闻杂志

《R新闻杂志》(R Newsletter)每年会出版两至三次,为一份免费的电子杂志,内容有关统计学软件发展及R语言开发信息。第一期在2001年一月出版。从2008年开始,被R Journal替代。[30]

参考文献

  1. ^ 1.0 1.1 Morandat, Floréal; Hill, Brandon; Osvald, Leo; Vitek, Jan. Noble, James , 编. Evaluating the Design of the R Language. ECOOP 2012 – Object-Oriented Programming. Lecture Notes in Computer Science (Berlin, Heidelberg: Springer). 2012: 104–131 [2021-07-18]. ISBN 978-3-642-31057-7. doi:10.1007/978-3-642-31057-7_6. (原始内容存档于2021-07-18) (英语). 
  2. ^ White, Homer. Programming Paradigms. Beginning Computer Science with R. 2021-01-31 [2021-07-18]. (原始内容存档于2021-07-18) (美国英语). 
  3. ^ 彼得·达尔高. R 4.2.1 is released. 2022年6月23日 [2022年6月23日] (英语). 
  4. ^ jmount. Why I don’t like Dynamic Typing. Win Vector LLC. 2012-02-25 [2021-07-18]. (原始内容存档于2021-07-17) (美国英语). 
  5. ^ R scripts. mercury.webster.edu. [2021-07-17]. (原始内容存档于2022-01-15). 
  6. ^ R Data Format Family (.rdata, .rda). www.loc.gov. 2017-06-09 [2021-07-18]. (原始内容存档于2021-07-17). 
  7. ^ Introduction. The Julia Manual. [2018-08-05]. (原始内容存档于20 June 2018). 
  8. ^ 8.0 8.1 8.2 8.3 8.4 8.5 8.6 R FAQ. cran.r-project.org. [2021-07-18]. (原始内容存档于2011-07-09). 
  9. ^ Using the R programming language in Jupyter Notebook — Anaconda documentation. docs.anaconda.com. [2021-12-29]. (原始内容存档于2022-04-26). 
  10. ^ index | TIOBE - The Software Quality Company. www.tiobe.com. [2021-07-18]. (原始内容存档于2018-02-25). 
  11. ^ Becker, Richard A. A Brief History of S. [2022-01-03]. (原始内容存档于2022-01-03). 
  12. ^ R: What is R?. www.r-project.org. [2021-07-18]. (原始内容存档于2011-07-19). 
  13. ^ John M. Chambers. S, R, and Data Science. The R Journal. 2020, 11 (1): 462-476. 
  14. ^ Sussman, Gerald Jay; Steele, Guy L. The First Report on Scheme Revisited. Higher-Order and Symbolic Computation. 1998-12-01, 11 (4): 399–404. ISSN 1573-0557. doi:10.1023/A:1010079421970 (英语). 
  15. ^ Academic unfazed by rock star status. NZ Herald. [2022-01-03]. (原始内容存档于2022-04-11) (en-NZ). 
  16. ^ R : Past and Future History -- A Free Software Project. cran.r-project.org. [2022-01-03]. (原始内容存档于2017-07-11). 
  17. ^ Ross Ihaka. The R Project: A Brief History and Thoughts About the Future (PDF). Ross Ihaka. [2022-01-03]. (原始内容 (pdf)存档于2018-02-02) (英语). 
  18. ^ ANNOUNCE: CRAN. stat.ethz.ch. [2022-01-03]. (原始内容存档于2021-03-08). 
  19. ^ CRAN - Mirrors. cran.r-project.org. [2022-01-15]. (原始内容存档于2022-05-10). 
  20. ^ CRAN - Contributed Packages. cran.r-project.org. [2022-01-03]. (原始内容存档于2022-04-11). 
  21. ^ R: Contributors. www.r-project.org. [2022-01-03]. (原始内容存档于2022-04-23). 
  22. ^ Martin Mächler. Kurt Hornik. R Foundation News (PDF). The R Journal. 2014, 6 (2): 190-191 [2022-01-03]. (原始内容 (PDF)存档于2022-01-20). 
  23. ^ 23.0 23.1 Dalgaard, Peter. Basics. Dalgaard, Peter (编). Introductory Statistics with R. Statistics and Computing. New York, NY: Springer. 2008: 1–29. ISBN 978-0-387-79054-1. doi:10.1007/978-0-387-79054-1_1 (英语). 
  24. ^ 存档副本. [2007-11-03]. (原始内容存档于2009-08-08). 
  25. ^ Han-feng Chen, Wai-Mee Ching, and Da Zheng. A Comparison Study on Execution Performance of MATLAB and APL (PDF). McGill University. [March 9, 2022]. (原始内容 (PDF)存档于2022-03-03) (英语). 
  26. ^ Data structures · Advanced R.. adv-r.had.co.nz. [2022-03-09]. (原始内容存档于2016-09-20). 
  27. ^ R: What is R?. www.r-project.org. [2022-03-09]. (原始内容存档于2011-07-19). 
  28. ^ 存档副本. [2007-06-04]. (原始内容存档于2007-06-25). 
  29. ^ Gnumeric, Team. Gnumeric 1.4 is Here!. The GNOME Project. 2004年12月19日 [2006-04-30]. (原始内容存档于2006年10月5日). 
  30. ^ 存档副本. [2007-06-04]. (原始内容存档于2007-05-28). 

外部链接

参见

{{bottomLinkPreText}} {{bottomLinkText}}
R语言
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.