- 1
- 0
- 约1.12万字
- 约 9页
- 2019-07-24 发布于未知
- 举报
使用 R 编写统计程序,第 3 部
分: 可重用和面向对象编程
了解 R 的底层特性
R 是一种作为自由软件发布的富统计环境,其中包括一种编程语言、一个交互式 shell 以及丰富的图形
功能。本文延续 David 的 前两期文章 (与 Brad Huntting 一起编写),研究 R 中的面向对象以及 R
中的其他一些一般编程概念。
本系列的 前两期 研究了 R 在 ¡真实环境¡ 中的使用方法。我们使用这几期的合作者收集的大量温度数
据研究了各种统计分析和制图功能。正如前几篇文章中提到的,我们实际上只接触到了 R 中丰富的统计
库的皮毛。
在本文中,我希望把对进一步统计分析本身 的讨论放在一边 (这在很大程度上是因为我自己还没有掌握
决定最相关技术所需的统计知识;我以前的合作者 Brad Huntting 和许多读者在这些方面比我的知识
丰富)。为了补充前两篇文章中提供的富统计概念,我希望带领读者探索一下 R 的底层语言设施。前两
篇文章主要针对 R 的功能性编程方面;通过这些文章,读者会更熟悉面向对象语言。
另外,以前我们只以相当特定的 方式讨论了 R。在本期中,我将讨论如何为 R 开发创建可重用的和模
块化的组件。
回到基础
在讨论 R 的面向对象概念之前,我们先回顾和澄清一下 R 的数据和函数概念。关于数据要记住的主要
概念是 ¡所有东西都是向量¡。尽管对象从表面上看与向量 (矩阵、数组、data.frames)不同,但是对
象实际上只是向量加上额外的 (可变的)属性,让 R 能够以特殊方式处理它们。
维 (拼写为 dim)是 (某些)R 向量最重要的属性之一。函数 matrix ()、array () 和 dim () 是用于
设置向量的维的简单函数。R 的 OOP 系统类似于把某些东西压缩在对象的 class 属性中。
我们先通过清单 1 中的代码回顾一下维的概念:
清单 1. 创建向量并分配维
v = 1:1000
typeof(v)
[1] integer
attributes(v)
NULL
dim(v) = c(10,10,10) # (Re)dimension
attributes(v)
$dim
[1] 10 10 10
v2 = matrix(1:1000, nrow=100, ncol=10)
typeof(v2)
[1] integer
attributes(v2)
$dim
[1] 100 10
attr(v2,dim) = c(10,10,10) # Redimension
attributes(v2)
$dim
[1] 10 10 10
简单地说,将 dim 属性附着到向量上有好几种语法,但是这些语法在本质上做的事是一样的。
关于 R 的 ¡所有东西都是向量¡ 方式,容易引起混乱的一点是行操作和列操作可能不符合直觉。例如,
以下代码创建一个 2D 数组 (矩阵)并操作单列或单行:
清单 2. 在矩阵向量上按行操作
m = matrix(1:12, nrow=3, ncol=4)
m
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
sum(m) # sum of all elements of m
[1] 78
sum(m[1,]) # sum of first row
[1] 22
但是,如果希望创建一个向量来求每行的总和,您可能会编写下面这样的代码:
清单 3. 执行多个行操作的错误方式
sum(m[c(1,2,3),]) # NOT sum of each row
[1] 78
可能会 在这里构造一个循环,但是这与 R 的功能和面向向量的操作不一致。实际上,应该使用函数
apply ():
清单 4. 用 apply() 函数进行行操作
apply(m, 1, sum) # by row
[1] 22 26 30
apply(m, 2, sum) # by column
[1] 6 15 24 33
apply(m, c(1,2), sum) # by column AND row (sum of each single cell)
[,1] [,2] [,3] [,4]
[
您可能关注的文档
- 思想道德修养与法律基础一.pdf
- 自考笔记-02448建筑结构试验(串讲)01.第一章结构试验概论.pdf
- 2015公职人员考试《申论》真题试卷(中).pdf
- 2011年二级建造师《法规与知识》考试真题及答案完整文字版.pdf
- 体育视频挖掘的研究现状《计算机工程及应用》2006.增刊.pdf
- 2016年江苏公职人员考试行测2013年真题(C类)讲义.pdf
- 线性代数课后习题详细解答袁晖坪版第三章线性方程组.pdf
- 新媒体营销动态第11期-我国报刊移动传播指数报告.pdf
- 2015人大行政管理考研[新]最全资料.pdf
- 2012年四川某市特岗教师考试教育公共基础笔试真题.pdf
- 伟明环保-市场前景及投资研究报告-境内业务稳健运行,印尼市场贡献边际增量.pdf
- 桂东县法院系统招聘考试真题2025.pdf
- 贵州省黔南布依族2026年中考三模物理试题及答案.pdf
- 贵州省黔南州2026年中考语文二模试卷附答案.pdf
- 贵州省铜仁市2026年中考语文二模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套完整答案详解.docx
- 贵州省毕节市2026年中考语文一模试卷附答案.pdf
- 贵州省贵阳市南明区2026年中考语文一模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套参考答案详解.docx
- 贵州省贵阳市白云区2026年中考二模物理试题附答案.pdf
原创力文档

文档评论(0)