R - 矩阵:初学者的友好入门
你好啊,未来的R编程超级巨星!我很高兴能成为你探索R中矩阵世界的向导。作为一个教授计算机科学多年的老师,我可以向你保证,矩阵不仅基础而且非常有趣。那么,让我们跳进去,一起揭开R矩阵的神秘面纱吧!
矩阵是什么?
在开始编码之前,我们先来了解一下矩阵是什么。想象一下电子表格或表格,行和列。这在R中基本上就是一个矩阵 - 一个由数字或字符组成的二维数组,按行和列排列。酷吧?
创建你的第一个矩阵
让我们从创建一个简单的矩阵开始:
my_first_matrix <- matrix(1:9, nrow = 3, ncol = 3)
print(my_first_matrix)
当你运行这段代码时,你会看到:
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
刚才发生了什么?我们使用了matrix()
函数来创建一个3x3的矩阵。数字1到9默认按列填充。就像把数字倒进列里一样!
自定义值的矩阵
让我们来点更复杂的:
custom_matrix <- matrix(c(10, 20, 30, 40, 50, 60), nrow = 2, ncol = 3)
print(custom_matrix)
输出:
[,1] [,2] [,3]
[1,] 10 30 50
[2,] 20 40 60
在这里,我们创建了一个2x3的矩阵,有特定的值。注意R是如何按列填充矩阵的。
访问矩阵元素
现在我们已经创建了矩阵,让我们来学习如何访问它们的元素。就像在地图上寻找宝藏一样!
访问单个元素
要访问单个元素,我们使用带行和列索引的方括号:
my_matrix <- matrix(1:9, nrow = 3, ncol = 3)
element <- my_matrix[2, 3]
print(element)
这将打印8
。我们刚刚访问了第2行第3列的元素!
访问整行或整列
想要整行或整列?没问题!
# 获取第二行
second_row <- my_matrix[2, ]
print(second_row)
# 获取第三列
third_column <- my_matrix[, 3]
print(third_column)
输出:
[1] 2 5 8
[1] 7 8 9
省略列或行索引会给你整个行或列。就像说,“给我这个行/列里的一切!”
矩阵计算
现在,让我们让我们的矩阵发挥作用!R使矩阵计算变得轻而易举。
矩阵加法
加法就像加数字一样简单:
matrix1 <- matrix(1:4, nrow = 2)
matrix2 <- matrix(5:8, nrow = 2)
sum_matrix <- matrix1 + matrix2
print(sum_matrix)
输出:
[,1] [,2]
[1,] 6 8
[2,] 8 10
就像加上相应的元素。魔法!
矩阵乘法
矩阵乘法有点复杂,但R使其变得简单:
result <- matrix1 %*% matrix2
print(result)
输出:
[,1] [,2]
[1,] 23 31
[2,] 34 46
%*%
操作符是矩阵乘法的首选。记住,第一个矩阵的列数必须等于第二个矩阵的行数!
转置矩阵
转置就像把矩阵翻到它的侧面:
transposed <- t(matrix1)
print(transposed)
输出:
[,1] [,2]
[1,] 1 2
[2,] 3 4
t()
函数是转置的魔法师!
实际示例:图像处理
让我们将我们的矩阵技能应用到现实世界的场景中。想象你正在处理一个简单的图像处理任务。在数字图像中,每个像素都由一个数字表示,整个图像是这些数字的矩阵。
这里是一个简单的5x5灰度图像,表示为矩阵:
image <- matrix(c(
200, 150, 100, 150, 200,
150, 100, 50, 100, 150,
100, 50, 0, 50, 100,
150, 100, 50, 100, 150,
200, 150, 100, 150, 200
), nrow = 5, byrow = TRUE)
print(image)
这将创建一个简单的菱形图案。现在,让我们通过给每个像素加50来 brighten 这个图像:
brightened_image <- image + 50
print(brightened_image)
我们刚刚使用矩阵加法执行了一个基本的图像处理操作!
结论
恭喜你!你已经迈入了R中矩阵的迷人世界。我们已经涵盖了创建矩阵、访问它们的元素以及执行基本计算。记住,熟能生巧,所以不要犹豫,去尝试这些概念。
在我们结束之前,这里有一个表格,总结了我们学到的关键矩阵函数:
函数 | 描述 | 示例 |
---|---|---|
matrix() |
创建矩阵 | matrix(1:9, nrow = 3, ncol = 3) |
[row, col] |
访问矩阵元素 | my_matrix[2, 3] |
+ |
矩阵加法 | matrix1 + matrix2 |
%*% |
矩阵乘法 | matrix1 %*% matrix2 |
t() |
转置矩阵 | t(matrix1) |
继续探索,继续编码,最重要的是,和R矩阵一起享受乐趣!它们不仅仅是盒子里的数字;它们是强大的工具,可以帮助你解决现实世界的问题。下次见,快乐编码!
Credits: Image by storyset