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("數學", "科學", "英語")
)
)
print(student_scores)
輸出:
數學 科學 英語
Alice 85 88 95
Bob 90 76 87
Charlie 78 92 82
現在,我們的數組有了有意義的行和列名稱。這讓我們更容易理解,例如,Alice在數學上得了85分,英語上得了95分!
訪問數組元素
既然我們有了數組,我們如何從中獲取特定的信息呢?這就像知道在書櫥中的哪個書架和哪個區域查找特定的書。
# 訪問單個元素
print(student_scores["Alice", "數學"]) # 輸出:85
# 訪問整行
print(student_scores["Bob", ]) # 輸出:數學 90 科學 76 英語 87
# 訪問整列
print(student_scores[, "科學"]) # 輸出:Alice 88 Bob 76 Charlie 92
操作數組元素
數組不僅僅用於存儲數據——我們還可以改變它們!讓我們更新一些成績:
# 更新單個成績
student_scores["Charlie", "英語"] <- 89
print(student_scores["Charlie", "英語"]) # 輸出:89
# 更新整行
student_scores["Alice", ] <- c(91, 93, 97)
print(student_scores["Alice", ]) # 輸出:數學 91 科學 93 英語 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