
R语言
![]() | |
编程范型 | 多重編程範式:阵列式、物件導向、函數式、反射式、指令式、[1]过程式[2] |
---|---|
設計者 | 罗斯·伊哈卡和罗伯特·杰特曼 |
實作者 | R核心開發小組 |
发行时间 | 1993年8月 |
穩定版本 | 4.2.1[3]
(2022年6月23日,11天前
) |
型態系統 | 动态类型[4] |
文件扩展名 | |
網站 | www![]() |
啟發語言 | |
S、Scheme、Lisp | |
影響語言 | |
Julia[7] | |
|
R语言是一種自由軟體程式語言與操作環境,主要用于统计分析、绘图以及数据挖掘。R本來由來自新西蘭奧克蘭大學的统计学家罗斯·伊哈卡和罗伯特·杰特曼開發,現在由R核心小组負責開發,同时也有其他用户编写了诸多外挂的软件包。R以S语言为基础,其語法來自Scheme。R的后台程序大多由C语言、FORTRAN语言和R自己写成。[8]
R语言是GNU計劃的一个项目,所以其原始碼可自由下載使用。R也有已編譯的執行檔版本可以下載,可在多种平台下运行,包括UNIX(也包括FreeBSD和Linux)、Windows和MacOS。[8]R可以以命令行操作,[8]同時有人開發了幾種圖形用戶界面,其中包括RStudio[8]与Jupyter。[9]
在TIOBE2022年1月对编程语言人气的排名中,R排名第12。[10]
发展历程[编辑]
R语言以S语言为基础,增加了Scheme语言中词法作用域这一机制,使程序员得以将代码中某一对象的适用范围限制到一小段代码之中。[1]S由里克·贝克尔、约翰·钱伯斯、道格·邓恩、琼·麦克雷、以及朱迪·席林于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月,小组成员包括伊哈卡、杰特曼、钱伯斯以及梅克勒,同时也包括了统计学家库尔特·奥尔尼克、道格拉斯·贝茨、彼得·达尔高、卢克·蒂尔尼、弗里德里希·莱施、托马斯·拉姆利、邓肯·坦普尔·朗、迈克尔·劳伦斯、乌韦·利格斯、布莱恩·里普利、塞巴斯蒂安·迈耶、保罗·默雷尔、马丁·普卢默、迪伊潘·萨卡尔、西蒙·乌尔巴内克以及计算机科学家托马斯·卡利贝拉。[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語言、LaTeX、Java及最常用C語言和Fortran撰寫。下載的執行檔版本會連同一批核心功能的軟件包,而根據CRAN紀錄有一萬多種不同的軟件包。其中有幾款較為常用,例如用於經濟計量、財經分析、人文科學與社會科學研究以及人工智能。[28]
發展[编辑]
生物信息学社群時常使用R進行分子生物學數據分析。Bioconductor計劃就是讓R作為基因圖譜分析工具。 Gnumeric開發者正和R開發者合作,改善Gnumeric計算結果的精確度。[29]
R新聞雜誌[编辑]
《R新聞雜誌》(R Newsletter)每年會出版兩至三次,為一份免費的電子雜誌,內容有關統計學軟件發展及R語言開發資訊。第一期在2001年一月出版。从2008年开始,被R Journal替代。[30]
参考文献[编辑]
- ^ 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) (英语).
- ^ White, Homer. Programming Paradigms. Beginning Computer Science with R. 2021-01-31 [2021-07-18]. (原始内容存档于2021-07-18) (美国英语).
- ^ 彼得·达尔高. R 4.2.1 is released. 2022年6月23日 [2022年6月23日] (英語).
- ^ jmount. Why I don’t like Dynamic Typing. Win Vector LLC. 2012-02-25 [2021-07-18]. (原始内容存档于2021-07-17) (美国英语).
- ^ R scripts. mercury.webster.edu. [2021-07-17]. (原始内容存档于2022-01-15).
- ^ R Data Format Family (.rdata, .rda). www.loc.gov. 2017-06-09 [2021-07-18]. (原始内容存档于2021-07-17).
- ^ Introduction. The Julia Manual. [2018-08-05]. (原始内容存档于20 June 2018).
- ^ 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).
- ^ Using the R programming language in Jupyter Notebook — Anaconda documentation. docs.anaconda.com. [2021-12-29]. (原始内容存档于2022-04-26).
- ^ index | TIOBE - The Software Quality Company. www.tiobe.com. [2021-07-18]. (原始内容存档于2018-02-25).
- ^ Becker, Richard A. A Brief History of S. [2022-01-03]. (原始内容存档于2022-01-03).
- ^ R: What is R?. www.r-project.org. [2021-07-18]. (原始内容存档于2011-07-19).
- ^ John M. Chambers. S, R, and Data Science. The R Journal. 2020, 11 (1): 462-476.
- ^ 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 (英语).
- ^ Academic unfazed by rock star status. NZ Herald. [2022-01-03]. (原始内容存档于2022-04-11) (en-NZ).
- ^ R : Past and Future History -- A Free Software Project. cran.r-project.org. [2022-01-03]. (原始内容存档于2017-07-11).
- ^ Ross Ihaka. The R Project: A Brief History and Thoughts About the Future (PDF). Ross Ihaka. [2022-01-03]. (原始内容 (pdf)存档于2018-02-02) (英语).
- ^ ANNOUNCE: CRAN. stat.ethz.ch. [2022-01-03]. (原始内容存档于2021-03-08).
- ^ CRAN - Mirrors. cran.r-project.org. [2022-01-15]. (原始内容存档于2022-05-10).
- ^ CRAN - Contributed Packages. cran.r-project.org. [2022-01-03]. (原始内容存档于2022-04-11).
- ^ R: Contributors. www.r-project.org. [2022-01-03]. (原始内容存档于2022-04-23).
- ^ 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.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 (英语).
- ^ 存档副本. [2007-11-03]. (原始内容存档于2009-08-08).
- ^ 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) (英语).
- ^ Data structures · Advanced R.. adv-r.had.co.nz. [2022-03-09]. (原始内容存档于2016-09-20).
- ^ R: What is R?. www.r-project.org. [2022-03-09]. (原始内容存档于2011-07-19).
- ^ 存档副本. [2007-06-04]. (原始内容存档于2007-06-25).
- ^ Gnumeric, Team. Gnumeric 1.4 is Here!. The GNOME Project. 2004年12月19日 [2006-04-30]. (原始内容存档于2006年10月5日).
- ^ 存档副本. [2007-06-04]. (原始内容存档于2007-05-28).
外部链接[编辑]
![]() |
维基共享资源中相关的多媒体资源:R语言 |
参见[编辑]
- RStudio - R语言的集成开发环境(IDE)
- SPSS - 另一種統計分析軟件
- Stata - 另一種統計分析軟件
- SAS系統 - 另一種統計分析軟件
- S-PLUS - 同樣建基於S語言的統計分析軟件
|
|
|
|
|