《R语言编程艺术》——3.1 创建矩阵

3.1 创建矩阵

矩阵的行和列的下标都从1开始。例如矩阵a左上角的元素记作a[1, 1]。矩阵在R中是按列存储的,也就是说先存储第一列,再存储第二列,以此类推,如2.1.3小节所示。
创建矩阵的方法之一就是使用matrix()函数:

这里把第一列(即1和2)与第二列(3和4)连接在一起。因此数据是(1,2,3,4)。然后我们给出行数和列数。由于R是按列存储的,这就决定了这四个数在矩阵中的位置。
上例指定了矩阵中全部的4个元素,因此没必要同时设定列数ncol和行数nrow这两个参数,只需要给出其中一个就够了。4个元素排成两行,就意味着列数为2。

注意,当我们打印输出y时,R向我们展示了它表示行和列的记号。例如[, 2]表示矩阵第二列,如下:

用这种方法需要事先向R声明y是一个矩阵,并且给出它的行数和列数。
尽管R的矩阵是按列存储的,但是可以通过把matrix()的byrow参数设置为TRUE,使矩阵元素按行排列。以下是使用byrow的一个例子:

需要注意的是,尽管这样设置,但是矩阵本身依然是按列存储的,参数byrow改变的只是数据输入的顺序。当读取的数据文件是按这种方式组织时,可能会更方便。

时间: 2024-08-29 12:15:32

《R语言编程艺术》——3.1 创建矩阵的相关文章

《R语言编程艺术》——1.3 函数入门

1.3 函数入门 和大多数编程语言一样,R语言编程的核心是编写"函数".函数就是一组指令的集合,用来读取输入.执行计算.返回结果.我们先定义一个函数oddcount(),以此简单介绍函数的用法.这个函数的功能是计算整数向量中奇数的个数.一般情况下,我们会用文本编辑器编写好函数代码并保存在文件中,不过在这个简单粗略的例子中,我们只需要在R的交互模式中一行行输入代码.接下来,我们还会在几个测试案例中调用这个函数: 首先,我们告诉R想定义一个名为oddcount的函数,该函数有一个参数x.左

《R语言编程艺术》——2.1 标量、向量、数组与矩阵

2.1 标量.向量.数组与矩阵 在许多编程语言中,向量与标量(即单个数值)不同.例如,考虑下面的C代码: 这段代码请求编译器给一个x的整型变量x分配空间,并给一个名为y的三元素整型数组(C语言中的术语,类似于R中的向量)分配内存空间.但在R中,数字实际上被当做一元向量,因为数据类型里没有标量.R语言中变量类型称为模式(mode).回顾第1章,同一向量中的所有元素必须是相同的模式,可以是整型.数值型(浮点数).字符型(字符串).逻辑型(布尔逻辑).复数型等等.如果在程序中查看变量x的类型,可以调用

《R语言编程艺术》——3.4 增加或删除矩阵的行或列

3.4 增加或删除矩阵的行或列 严格来说,矩阵的长度和维度是固定的,因此不能增加或删除行或列.但是可以给矩阵重新赋值,这样可以得到和增加或删除一样的效果.3.4.1 改变矩阵的大小 回忆之前通过重新赋值改变向量大小的方法: 第一个例子里,x原来长度为5,通过拼接和重新赋值,将其长度变为6.事实上我们没有改变x的长度,而是生成一个新的向量,然后赋值给x. 注意 重新赋值的过程可能会在用户看不见的情况下进行,在14章我们将会介绍.例如,即使是x[2]<-12这种小操作事实上都是一个重新赋值的过程.

《R语言编程艺术》——3.5 向量与矩阵的差异

3.5 向量与矩阵的差异 在本章开始的时候,我说过矩阵就是一个向量,只是多了两个属性:行数和列数.这里,我们再深入说明这个问题.考虑以下例子: 因为z是向量,因此我们可以求它的长度: 换句话说,从面向对象编程的角度说,矩阵类(matrix class)是实际存在的.如第1章所说,R的大部分类都是S3类,用$符号就可访问其各组件.矩阵类有一个dim属性,是一个由矩阵的行数和列数组成的向量.本书第9章讲详细介绍关于类的更多细节问题. 以用dim()函数访问dim属性: 这些其实都是对dim函数的一个

《R语言编程艺术》——第3章 3.0 矩阵和数组

第3章 3.0 矩阵和数组 矩阵(matrix)是一种特殊的向量,包含两个附加的属性:行数和列数.所以矩阵也和向量一样,有模式的概念,例如数值型和字符型.(但反过来,向量却不能看作是只有一列或一行的矩阵.)数组(array)是R里更一般的对象,矩阵是数组的一个特殊情形.数组可以是多维的.例如一个三维的数组可以包含行.列和层(layer),而一个矩阵只有行和列两个维度.本章主要讨论矩阵,本章最后一节会简述更高维的数组.R的强大之处就在于它丰富的矩阵运算.本章主要讲述这些运算,尤其注重类似于向量的取

《R语言编程艺术》——导读

前言 R是一种用于数据处理和统计分析的脚本语言,它受到由AT&T实验室开发的统计语言S的启发,且基本上兼容于S语言.S语言的名称代表统计学(statistics),用来纪念AT&T开发的另一门以一个字母命名的编程语言,这就是著名的C语言.后来一家小公司买下了S,给它添加了图形用户界面并命名为S-Plus. 由于R是免费的,而且有更多的人贡献自己的代码,R语言变得比S和S-Plus更受欢迎.R有时亦称为GNU S,以反映它的开源属性.(GNU项目是开源软件的一个重要集合.) 为什么在统计工作

《R语言编程艺术》——1.4 R语言中一些重要的数据结构

1.4 R语言中一些重要的数据结构 R有多种数据结构.本节将简单介绍几种常用的数据结构,使读者在深入细节之前先对R语言有个大概的认识.这样,读者至少可以开始尝试一些很有意义的例子,即使这些例子背后更多的细节还需要过一段时间才能揭晓.1.4.1 向量,R语言中的战斗机 向量类型是R语言的核心.很难想象R语言代码或者R交互式会话可以一点都不涉及向量. 向量的元素必须属于某种"模式"(mode),或者说是数据类型.一个向量可以由三个字符串组成(字符模式),或者由三个整数元素组成(整数模式),

《R语言编程艺术》——第2章 2.0 向量

第2章 2.0 向量 R语言最基本的数据类型是向量(vector).第1章已经给出了向量的一些例子,本章将详细介绍向量.首先考察向量与R语言的其他数据类型之间的关系.与C语言家族不同,R语言中,单个数值(标量)没有单独的数据类型,它只不过是向量的一种特例.而另一方面,R语言中矩阵是向量的一种特例,这一点与C语言家族相同.接下来我们会用大量时间关注以下话题:循环补齐:在一定情况下自动延长向量.筛选:提取向量子集.向量化:对向量的每一个元素应用函数.这些运算是R编程的核心,在本书的其他部分也会经常提

《R语言编程艺术》——3.2 一般矩阵运算

3.2 一般矩阵运算 前面介绍了创建矩阵的基本方法,现在我们来看一些常用的矩阵运算,包括线性代数运算.矩阵索引和矩阵元素筛选.3.2.1 线性代数运算 你可以对矩阵进行各种线性代数运算,比如矩阵相乘.矩阵数量乘法和矩阵加法.针对以前例子中的y,以下为这三种运算的实例: 关于矩阵线性代数运算的更多细节请参见8.4节.3.2.2 矩阵索引 2.4.2节中的向量运算同样适用于矩阵,例如: 这里我们提取了矩阵z中第2.3列的所有元素组成了一个子矩阵. 下面的例子提取的是矩阵的行: 还可以对一个矩阵的子矩