R - 数组:初学者的强大数据结构指南
你好,有抱负的R语言程序员!我很高兴能成为你在这个激动人心的R语言数组世界中的向导。作为一个教授计算机科学超过十年的人,我可以向你保证,数组就像是编程中的瑞士军刀——多功能、强大,且绝对必要掌握。那么,让我们开始吧!
数组是什么?
在我们深入了解之前,让我们从基础开始。想象你有一堆书。你可以把它们堆成一堆,但这会让你很难找到特定的书。现在,想象一个有多个书架和部分的书架。这基本上就是R语言中的数组——一种结构化的存储和组织数据的方式。
在R语言中,数组是一个多维数据结构,可以存储相同类型的数据。它就像是一个矢量的高级版本,能够以多维存储数据。
示例:创建你的第一个数组
让我们创建我们的第一个数组!我们将使用array()
函数来完成这个任务。
my_first_array <- array(1:24, dim = c(4, 3, 2))
print(my_first_array)
当你运行这段代码时,你会看到类似这样的输出:
, , 1
[,1] [,2] [,3]
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12
, , 2
[,1] [,2] [,3]
[1,] 13 17 21
[2,] 14 18 22
[3,] 15 19 23
[4,] 16 20 24
发生了什么?我们创建了一个三维数组!把它想象成两个4x3的矩阵堆叠在一起。dim = c(4, 3, 2)
部分告诉R创建一个有4行、3列和2个“层”或矩阵的数组。
命名列和行
就像我们给书架贴上标签以便更容易找到书籍一样,我们可以给数组的维度命名。这使得我们的数据更有意义,也更容易处理。
# 创建一个带有命名维度的数组
student_scores <- array(
c(85, 90, 78, 92, 88, 76, 95, 87, 82),
dim = c(3, 3),
dimnames = list(
c("Alice", "Bob", "Charlie"),
c("Math", "Science", "English")
)
)
print(student_scores)
输出:
Math Science English
Alice 85 88 95
Bob 90 76 87
Charlie 78 92 82
现在我们的数组有了有意义的行和列名。理解Alice在数学中得了85分,在英语中得了95分要容易得多!
访问数组元素
现在我们有了数组,我们如何从中获取特定的信息呢?就像知道在书架的哪个货架和部分中查找一样。
# 访问单个元素
print(student_scores["Alice", "Math"]) # 输出:85
# 访问整行
print(student_scores["Bob", ]) # 输出:Math 90 Science 76 English 87
# 访问整列
print(student_scores[, "Science"]) # 输出:Alice 88 Bob 76 Charlie 92
操作数组元素
数组不仅用于存储数据——我们还可以改变它们!让我们更新一些分数:
# 更新单个分数
student_scores["Charlie", "English"] <- 89
print(student_scores["Charlie", "English"]) # 输出:89
# 更新整行
student_scores["Alice", ] <- c(91, 93, 97)
print(student_scores["Alice", ]) # 输出:Math 91 Science 93 English 97
对数组元素进行计算
数组最强大的功能之一是能够对其元素进行计算。让我们计算一些平均值:
# 计算每个学生的平均分数
student_averages <- apply(student_scores, 1, mean)
print(student_averages)
# 计算每门科目的平均分数
subject_averages <- apply(student_scores, 2, mean)
print(subject_averages)
apply()
函数就像是数组的瑞士军刀。第二个参数(1或2)告诉R是应用到行(1)还是列(2)。
数组方法
以下是一些在R中常用的数组方法的表格:
方法 | 描述 | 示例 |
---|---|---|
array() |
创建数组 | array(1:12, dim = c(3, 4)) |
dim() |
获取或设置数组维度 | dim(my_array) |
length() |
获取元素总数 | length(my_array) |
dimnames() |
获取或设置维度名称 | dimnames(my_array) |
apply() |
在数组边缘应用函数 | apply(my_array, 2, sum) |
sweep() |
扫除数组摘要 | sweep(my_array, 2, colMeans(my_array)) |
结论
恭喜你!你已经迈入了强大的R语言数组世界的第一步。我们涵盖了创建数组、命名维度、访问和操作元素,甚至跨元素进行计算。
记住,学习使用数组就像学习组织图书馆。起初,它可能看起来很复杂,但一旦你掌握了它,你会惊讶于你能多有效率地存储、访问和分析你的数据。
在你继续你的R语言之旅时,你会发现数组无处不在——从简单的数据分析到复杂的统计模型。所以继续练习,保持好奇心,不要害怕尝试。快乐编码,愿你的数组总是井井有条!
Credits: Image by storyset