文章

R语言实战(第3版)- 第2.2节(创建数据集)笔记

向量(Vector)

向量是用于存储数值型、字符型或逻辑型数据的一维数组。使用函数c()即可创建向量。

创建向量

1
2
a <- c(1, 2, 5, 7) 
b <- c("a", "c") 

值得一提的是不同其他大多数编程语言,向量的索引(Index)不是从0开始而是从1开始

向量中不能包含不同类型的值

数值型即想1、2、3、1.2、3.6这种数字;字符型(”a”, “b”,”asdf”);逻辑型(TURE/FALSE)。 下面代码虽然可以执行,但不是最佳实践

1
2
3
# 不建议使用
a <- c(1,"2","3")  
print(a)            #输出:[1] "1" "2" "3"

矩阵(Matrix)

R语言为线性代数的研究提供了矩阵类型,这种数据结构很类似于其它语言中的二维数组,但R提供了语言级的矩阵运算支持。

创建矩阵

R 语言的矩阵可以使用 matrix()函数来创建

1
2
3
4
5
6
7
8
9
10
11
# 1:20等价于c(1:20)能生成一个1到20的一维数组,4行5列
y <- matrix(1:20, nrow = 5, ncol = 4)
print(y)
"""
     [,1] [,2] [,3] [,4]
[1,]    1    6   11   16
[2,]    2    7   12   17
[3,]    3    8   13   18
[4,]    4    9   14   19
[5,]    5   10   15   20
"""

```R
matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE,dimnames = NULL)
  • data:向量数据
  • nrow:生成多少行,默认为1
  • ncol:生成多少列默认为1
  • byrow: 为 FALSE 按列排列,为 TRUE 按行排列,默认为FALSE
  • dimnames: 行和列的名称
1
2
3
4
5
6
7
# byrow 为 TRUE 元素按行排列
M <- matrix(c(3:14), nrow = 4, byrow = TRUE)
print(M)

# Ebyrow 为 FALSE 元素按列排列
N <- matrix(c(3:14), nrow = 4, byrow = FALSE)
print(N)

输出

1
2
3
4
5
6
7
8
9
10
     [,1] [,2] [,3]
[1,]    3    4    5
[2,]    6    7    8
[3,]    9   10   11
[4,]   12   13   14
     [,1] [,2] [,3]
[1,]    3    7   11
[2,]    4    8   12
[3,]    5    9   13
[4,]    6   10   14

矩阵下标

当涉及到矩阵下标的使用时,以下是一些使用R代码进行直接说明的示例:

访问单个元素:

1
2
3
4
5
6
7
8
9
10
mat <- matrix(1:9, nrow = 3)  # 创建一个3x3的矩阵
element <- mat[2, 3]  # 访问第2行第3列的元素
print(mat)
print(element)  # 输出结果: 8

     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
[1] 8

访问整列或整行:

1
2
3
4
5
6
mat <- matrix(1:9, nrow = 3)  # 创建一个3x3的矩阵
row_vector <- mat[2, ]  # 访问第2行的所有列
column_vector <- mat[, 3]  # 访问第3列的所有行
print(mat)
print(row_vector) 
print(column_vector)
1
2
3
4
5
6
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
[1] 2 5 8
[1] 7 8 9

切片操作

1
2
3
4
5
6
mat <- matrix(1:9, nrow = 3)  # 创建一个3x3的矩阵
sub_matrix <- mat[1:2, 2:3]  # 访问第1行到第2行、第2列到第3列的子矩阵
print(sub_matrix)  # 输出结果:
#      [,1] [,2]
# [1,]    4    7
# [2,]    5    8

使用逻辑向量进行子集选择:

1
2
3
mat <- matrix(1:9, nrow = 3)  # 创建一个3x3的矩阵
selected_elements <- mat[mat > 5]  # 选择大于5的所有元素
print(selected_elements)  # 输出结果: 6 7 8 9

参考

[1] R语言实战 - 第三版
[2] https://www.runoob.com/r/r-data-types.html

本文由作者按照 CC BY 4.0 进行授权