R语言学习笔记(4)——数据结构Ⅰ:向量、矩阵和多维数组

R常用数据结构

  • 存放同类型数据:向量、矩阵、多维数组
  • 存放不同类型数据:列表、数据框
  • 分类变量数据:因子
  • 其他:字符串、日期时间数据、时间序列数据、空间地理数据等

向量

定义

由一组相同类型的数值构成的序列

分类

数值向量

  • 由数值组成的向量
  • 单个数值被视作长度为1的数值向量

常用函数:
c():将多个对象合并
<number>:<number>/seq():创建等差的数值向量

seq()基本语法:seq(from, to, by, length.out, along.with, ...)

rep():创建元素重复的数值向量

rep()基本语法“:rep(x, times, length.out, each, .….)

逻辑向量

  • 由逻辑值组成的向量
  • 其运算结果还是逻辑值

字符向量

  • 由字符串组成的向量
  • 注意:
    • 一个字符串是字符向量的一个元素,字符向量并不会自动合并其中的字符串,每个字符串可以有自己的“名字”

常用函数和操作:

关于索引和按索引访问

  • R中的索引是从1开始的。有正向索引和负向索引,但不能同时使用正向索引和负向索引。

  • 访问不存在的位置会返回NA

  • 使用vector[<number1>:<number2>]访问索引从number1到number2的元素,闭区间。

  • 使用vector[<number1>,<number2>,]访问索引为number1、number2等的元素

  • 可以使用逻辑向量来访问:输入与向量相同长度的逻辑向量,以此决定每一个元素是否要被获取。此处可以引申为根据特定条件访问向量的子集

  • 可以在创建向量时对每个元素命名,之后就可以通过名字来访问元素

    • 访问或修改向量元素的名字
      image.png
  • 区分[][[]]:

    image.png

关于赋值和替换:

  • 对向量子集赋值,就是先访问到向量子集,再赋值。
  • 对不存在的位置赋值时,前面用NA补齐

writeLines():输出不带引号的字符串
which.max(v1):返回向量v1中最大值所在的位置
which.min(v1):返回向量v1中最小值所在的位置

对向量排序

sort():对向量排序。默认为升序decreasing=FALSE
order():返回排序后序列中的元素在原序列中的索引。以其输出作为索引访问元素时,可得到排好序的向量
rank():返回该向量中各个元素的“排名”。可通过参数method设置对相同值的处理方式
rev():将向量进行反转

矩阵

定义

由同一类型的元素组成的、有两个维度的向量

创建矩阵

matrix():将一个向量转换成矩阵

语法:matrix(x, nrow, ncol, byrow, dimnames, .….)

创建特殊矩阵:
diag():创建对角矩阵

矩阵转化为向量

as.vector()可将矩阵转化为向量,按列读取元素

访问矩阵

通常使用二维存取器[ , ]进行访问,第一个参数是行,第二个参数是列,空缺的话代表所有元素。负索引表示忽略这一行/列
也可以使用一维索引,此时将矩阵视作按列展开的向量
可以根据逻辑矩阵访问矩阵,不过访问返回的是向量

矩阵运算

四则运算同向量
%*%:矩阵乘法,若A%*%B,要求A的列数等于B的行数

多维数组

定义

由同一类型的元素组成的

创建多维数组

array():将一个向量转化为多维数组

array(x, dim, dimnames, ……)

创建数组时对各个维度命名,也可以创建后再命名

访问多维数组

使用二维存取器[ , , ]进行访问

获取多维数组的维数

dim():返回多维数组各维度的元素数

参考资料:
《R语言编程——基于tidyverse》张敬信

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容