脱胎于 S 语言的R语言,Ross Ihaka 和 Robert Gentleman 和社区的力量让 R 在学术界与研究机构放光彩
R语言从一门用于统计学教学的编程语言,发展成为全球数据科学领域的重要工具,离不开其强大的功能、丰富的社区资源和开源精神。这些都离不开Ross Ihaka 和 Robert Gentleman 和 社区的力量。
在1990年代初,新西兰奥克兰大学的统计学教授Ross Ihaka和Robert Gentleman认识到,需要一种适用于教学和研究的、功能强大且开源的统计编程语言。他们受到S语言的启发,决定开发一门新语言,这就是后来的R语言。R语言的命名既是对S语言的致敬,也是因为两位创始人名字的首字母均为R。
1、脱胎于 S 语言的R语言
R语言的诞生离不开S语言的影响。S语言是一门由John Chambers及其同事在贝尔实验室开发的统计编程语言,旨在为统计计算提供一个灵活且功能强大的平台。S语言通过其交互式的编程环境和丰富的统计功能,迅速成为统计学界的重要工具。然而,S语言的商业化运作使得它的广泛使用受到限制,尤其是在学术界和研究机构。因此,S语言的开源替代品逐渐成为学术界的需求。
R语言的设计深受S语言的影响,特别是在语法和函数结构方面。S语言的一大特点是其面向对象的编程风格,这一特点在R语言中得到了继承和发展。R语言通过函数式编程和面向对象编程的结合,提供了灵活的编程接口,允许用户自定义数据结构和分析流程。
| 方面 | R语言 | S语言 |
|---|---|---|
| 起源 | 1990年代初在奥克兰大学开发的开源项目,灵感来自S语言 | 1970年代中期在贝尔实验室开发,主要用于内部统计研究 |
| 主要开发者 | Ross Ihaka, Robert Gentleman | John Chambers, Rick Becker, Allan Wilks |
| 目的 | 最初设计用于统计计算和图形制作,重点是易用性和可扩展性 | 设计用于统计计算和数据分析,主要用于研究目的 |
| 是否开源 | 是的,R完全开源 | 最初是专有软件,后来的版本(S-PLUS)为商业软件 |
| 受欢迎程度 | 在学术界和工业界广泛流行;有强大的社区驱动发展 | 在研究机构和统计学家中流行,尤其是在1980年代和1990年代 |
| 社区支持 | 拥有广泛的社区支持,有众多论坛、邮件列表和在线资源 | 社区支持有限,主要由商业实体(如S-PLUS)推动 |
| 包管理 | Comprehensive R Archive Network (CRAN) 拥有超过18,000个包 | S-PLUS中的商业包管理系统;没有CRAN那么广泛 |
| 语法相似性 | 与S语言高度相似,但包含了额外的功能和改进 | R语言的基础;R语言扩展和修改了S语言的语法 |
| 应用范围 | 范围广泛,用于统计分析、数据可视化等 | 主要集中在统计分析和数据建模 |
| 面向对象编程 | 支持面向对象编程,包括S3和S4类 | 支持面向对象编程,但主要使用S3类 |
| 数据处理能力 | 有效处理大型数据集;设计时考虑了数据操作和分析的需求 | 数据分析效果良好,但与现代R相比处理极大数据集的效率较低 |
| 词法作用域 | 使用类似于Scheme的词法作用域,使代码更灵活和可靠 | 早期版本使用动态作用域;后来的版本引入了词法作用域 |

2、从学术项目到全球推广
R语言最初是作为一门教学工具而开发的,其目标是为统计学课程提供一个易于使用且功能丰富的编程环境。Ihaka和Gentleman在奥克兰大学开始了R语言的开发工作,并于1993年8月首次在StatLib数据存档网站上发布了R的二进制文件。这一发布引起了统计学界的广泛关注,他们同时在s-news邮件列表中宣布了这一消息。
R语言的早期版本吸引了一批热衷于统计计算的学者和研究人员,他们开始积极参与R语言的开发和推广。R语言的开源性质使得任何人都可以自由地修改、扩展和分享这门语言,从而推动了R语言的快速发展。
3、R语言的社区活动发起
R语言的成功离不开其背后的开源社区。在R语言发布的早期阶段,学术界和研究机构的积极参与者开始为R语言贡献代码、开发包和文档。这些贡献不仅扩展了R语言的功能,还丰富了其应用场景,使R语言逐渐成为统计学和数据科学领域的标准工具。
1997年12月5日,R语言正式成为GNU项目的一部分,标志着其作为开源项目的地位得到进一步巩固。同年,R语言的版本号达到0.60,随后R语言社区开始以更加系统化的方式进行开发和维护。
4、R语言的关键里程碑
R语言的开发经历了多年的积累和改进,终于在2000年2月29日发布了其第一个正式版本R 1.0.0。这一版本的发布是R语言发展史上的重要里程碑,标志着R语言的功能和稳定性达到了一个成熟的阶段。R 1.0.0版本不仅包含了全面的统计分析工具,还引入了数据可视化功能和灵活的编程接口,使其能够应对复杂的数据分析任务。此时,R语言已经在学术界和研究机构中得到了广泛应用,并开始吸引工业界的关注。
5、 CRAN的建立与扩展
R语言的另一个重要发展是CRAN(Comprehensive R Archive Network)的建立。CRAN是一个R语言软件包的在线存储库,允许用户轻松地下载、安装和更新R语言的扩展包。CRAN的建立为R语言的扩展性提供了强有力的支持,使得用户可以根据自己的需求添加新的功能和工具。
随着时间的推移,CRAN的规模不断扩大,目前已经包含了数以万计的R语言扩展包,涵盖了从基础统计分析到机器学习、从生物信息学到金融数据分析等各个领域。CRAN的丰富资源大大增强了R语言的适用性,使其成为数据科学家和统计学家的首选工具之一。
为帮助大家更出色地掌握临床统计、数据挖掘以及人工智能建模的入门知识和应用,由于众多同学在计算机编程上经验欠缺,特此开设《R 探索临床数据科学》专栏。该专栏每周至少会定期更新三篇,直到整个专栏更新完成。每篇文章都在 5000 字以上,质量平均分高达 94 分。要提醒大家的是,每结束一个章节,专栏的优惠力度就会减小,当下正是订阅的最佳优惠时段,诚邀各位积极订阅!
专栏《R 探索临床数据科学》链接:https://blog.csdn.net/2301_79425796/category_12729892.html?spm=1001.2014.3001.5482
相关文章:
脱胎于 S 语言的R语言,Ross Ihaka 和 Robert Gentleman 和社区的力量让 R 在学术界与研究机构放光彩
R语言从一门用于统计学教学的编程语言,发展成为全球数据科学领域的重要工具,离不开其强大的功能、丰富的社区资源和开源精神。这些都离不开Ross Ihaka 和 Robert Gentleman 和 社区的力量。 在1990年代初,新西兰奥克兰大学的统计学教授Ross I…...
JavaEE 第6节 内存可见性问题以及解决方法
目录 一、什么是内存可见性问题? 1、问题代码演示 2、基础知识铺垫 1)硬件层面 2)模型层面(JMM) 二、内存可见性问题的原因 三、volatile解决内存可见性问题 一、什么是内存可见性问题? 1、问题代码…...
es基本操作
以下是一些 Elasticsearch 常用的命令,涵盖了索引管理、数据操作和集群管理等方面: 基本操作 检查集群状态: curl -X GET "localhost:9200/_cluster/health?pretty"查看集群健康状态和基本信息。 查看所有索引: curl…...
开源 AI 智能名片 S2B2C 商城小程序赋能下的社区团购商业模式研究
摘要:本文深入探讨了社区团购商业模式的本质、特点及其优势,并详细分析了开源 AI 智能名片 S2B2C 商城小程序在社区团购中的应用与价值。通过对相关案例的研究和数据的分析,揭示了这一创新组合对社区商业生态的重要影响,为未来社区…...
AutoSar AP软件规范中CM介绍及功能概要
1. 前言 为了理解AutoSar AP中EM的概念,生搬硬套的翻译了《 AUTOSAR SWS CommunicationManagement.pdf》的介绍部分,并按照自己的理解进行了修改。如下 2. AUTOSAR_SWS_CommunicationManagement.pdf的介绍部分 本文件包含AUTOSAR AP通信管理的功能、A…...
【图形学】TA之路-向量
向量 向量 是一个有大小和方向的数学对象。在三维空间中,向量通常表示为 (v_x, v_y, v_z)。 基本操作 加法: a b (a_x b_x, a_y b_y, a_z b_z)减法: a - b (a_x - b_x, a_y - b_y, a_z - b_z)标量乘法: k * v (k * v_x, …...
[flink]部署模式
部署模式 在一些应用场景中,对于集群资源分配和占用的方式,可能会有特定的需求。 Flink为各种场景提供了不同的部署模式,主要有以下三种:会话模式(Session Mode)、单作业模式(Per-Job Mode&…...
为什么不用postman做自动化
面试的时候被问到:为什么不用postman做自动化 打开postman,看到用例集管理、API 管理、环境管理这三个功能,用户体验感算得上品牌等级了 为什么不用呢,文心一言给了一些答案 不适合大规模自动化测试:Postman 主要是为…...
一、Matlab基础
文章目录 一、Matlab界面二、Matlab窗口常用命令三、Matlab的数据类型3.1 数值类型3.2 字符和字符串3.3 逻辑类型3.4 函数句柄3.5 结构类型3.6 细胞数组 四、Matlab的运算符4.1 算术运算符4.2 关系运算符4.3 逻辑运算4.4 运算符优先级 五、Matlab的矩阵5.1 矩阵的建立5.2 矩阵的…...
执行java -jar命令,显示jar中没有主清单属性
在Java中,一个"主清单属性"(Main-Class attribute)是指定JAR文件中包含的应用程序入口点,即包含main方法的类的完全限定名。如果你尝试运行一个没有主清单属性的JAR文件,你可能会看到错误消息,如…...
【C++进阶】红黑树
目录 什么是红黑树?红黑树红黑树的性质 定义红黑树红黑树的操作insertinorderfindheightsize构造函数析构函数赋值拷贝判断红黑树 全部代码总结 什么是红黑树? 红黑树 红黑树(Red-Black Tree)是一种自平衡的二叉搜索树ÿ…...
linux使用ssh连接一直弹出密码框问题
1.查看ssh服务的状态 输入以下命令: sudo service sshd status 小编已经安装了。 如果出现 Loaded: error (Reason: No such file or directory) 提示的话,说名没有安装ssh服务,按照第二步:安装ssh服务。 如果出现 Active: in…...
Python 3 数据结构
Python 3 数据结构 引言 Python 是一种高级编程语言,因其简洁明了的语法和强大的功能而广受欢迎。在 Python 中,数据结构是组织和存储数据的方式,对于编写高效和可维护的代码至关重要。本文将深入探讨 Python 3 中的主要数据结构࿰…...
【开源社区】Elasticsearch(ES)中空值字段 null_value 及通过exists查找非空文档
文章目录 0、声明1、问题描述2、问题剖析2.1 NULL或者空值类型有哪些2.2 案例讲解:尝试检索值为 null 的字段2.3 解决思路 3、使用 null_value 的诸多坑(避免生产事故)3.1 null_value 替换的是索引,并不会直接替换源数据3.2 不支持…...
JavaDS —— 位图(BitSet)与 布隆过滤器
位图 引入问题:给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中。 首先要注意 40 亿个数据如果使用 整型(int) 来存放的话,就是要 40 亿个整型,一个整型有…...
如何确保场外个股期权交易的安全?
如何确保场外个股期权交易的安全?投资者可以采取以下措施,以提高交易的安全性和减少风险: 增强知识储备:深入学习期权的基础知识,包括不同类型的期权、它们的权利和义务、定价方式以及风险特性,从而提升自…...
第2章:LabVIEW FPGA未来发展方向《LabVIEW ZYNQ FPGA宝典》
2.1:NI的LabVIEW FPGA未来战略部署 在展望NI公司的LabVIEW FPGA技术未来发展趋势之前,让我们先来回顾一下LabVIEW与FPGA的技术发展历程,如图2-1所示。可以看出,NI公司的LabVIEW FPGA软件一方面是跟随Xilinx最新的FPGA硬件可持续发…...
苹果电脑维护工具:CleanMyMac X让你的Mac焕发新生!
在我们的数字生活中,苹果电脑(Mac)已成为不可或缺的一部分,无论是为工作披星戴月,还是为娱乐畅游云端。但是,就像任何长时间运行的机器一样,Mac也可能会因为积累的文件和不必要的数据而开始变慢…...
MySQL2 DML数据操纵语言和SQL约束
DML和SQL约束 SQL-DML1.添加数据2.修改数据3.删除 TRUNCATE和DELETE的区别:SQL-约束Primary Key创建主键约束单列主键联合主键**验证主键约束**删除主键约束设置主键自增AUTO_INCREMENTdelete和truncate删除后,主键的自增 SQL-唯一约束UNIQUE创建唯一约束…...
Ubuntu 20.04 中安装 Nginx (通过传包编译的方式)、开启关闭防火墙、开放端口号
文章目录 前言一、安装包下载二、上传服务器并解压缩三、依赖配置安装四、生成编译脚本五、编译六、查看是否编译完成七、开始安装八、查看是否安装成功九、设置为开机自启动 前言 参考大佬文章并在基础上做了点修改,发篇文章记录下 防止下次遇到。 参考文章&#…...
python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...
NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...
LabVIEW双光子成像系统技术
双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...
【Veristand】Veristand环境安装教程-Linux RT / Windows
首先声明,此教程是针对Simulink编译模型并导入Veristand中编写的,同时需要注意的是老用户编译可能用的是Veristand Model Framework,那个是历史版本,且NI不会再维护,新版本编译支持为VeriStand Model Generation Suppo…...
