R - 向量:初學者的指南

你好,未來的R語言編程者!今天,我們將踏上一段令人興奮的旅程,探索R語言中的向量世界。別擔心如果你從未編過程序——我將成為你的友好導遊,我們會一步步來。在本教程結束時,你將能夠像專業人士一樣創建和操作向量!

R - Vectors

什麼是向量?

在我們深入探討之前,讓我們先了解什麼是向量。在R語言中,向量就像一個容器,它包含多個同類型的項目。把它想像成一列火車,有幾節車廂,每節車廂都裝著同樣的貨物。這些貨物可以是數字、文本,甚至是邏輯值(真/假)。

向量創建

讓我們開始學習如何創建向量。在R中有許多方法可以做到這一點,但我們將聚焦於最常見且最有用的方法。

使用 c() 函數

創建向量的最直接方式是使用 c() 函數。'c' 的意思是 '結合' 或 '串聯'。

# 創建一個數字向量
numbers <- c(1, 2, 3, 4, 5)
print(numbers)

# 創建一個字元向量
fruits <- c("apple", "banana", "cherry")
print(fruits)

# 創建一個邏輯向量
is_student <- c(TRUE, FALSE, TRUE, TRUE)
print(is_student)

在這些例子中,我們創建了三種不同類型的向量。 <- 符號用於將向量分配給變量名稱。

使用 : 運算符

對於創建一個數字序列,: 運算符非常方便:

# 創建一個從 1 到 10 的序列
sequence <- 1:10
print(sequence)

# 創建一個反向序列
reverse_sequence <- 10:1
print(reverse_sequence)

這是一種快速創建整數序列的方法。就像告訴R:"給我從這個到那個的所有數字。"

使用 seq() 函數

對於對您的序列有更多控制,seq() 函數是您的助手:

# 創建一個有特定步長的序列
by_twos <- seq(from = 0, to = 10, by = 2)
print(by_twos)

# 創建一個有特定長度的序列
five_numbers <- seq(from = 0, to = 1, length.out = 5)
print(five_numbers)

seq() 函數更靈活,讓您可以指定開始值、結束值、步長或您想要的元素數量。

使用 rep() 函數

有時候,您可能想重複某些值。這時 rep() 函數就派上用場了:

# 重複單一值
repeat_five <- rep(5, times = 3)
print(repeat_five)

# 重複一個向量
repeat_vector <- rep(c(1, 2), times = 3)
print(repeat_vector)

# 重複每一個元素
repeat_each <- rep(c(1, 2), each = 3)
print(repeat_each)

rep() 非常適合創建模式或用重複的值填充您的數據。

讀取向量元素

既然我們已經知道如何創建向量,讓我們學習如何讀取它們的元素。在R中,我們使用方括號 [] 來達到這個目的。

通過索引讀取

記住,在R中,索引從1開始,而不是像某些其他編程語言那樣從0開始。

fruits <- c("apple", "banana", "cherry", "date")

# 讀取第一個元素
print(fruits[1])  # 輸出: "apple"

# 讀取第三個元素
print(fruits[3])  # 輸出: "cherry"

# 讀取多個元素
print(fruits[c(1, 3)])  # 輸出: "apple" "cherry"

# 讀取一個範圍的元素
print(fruits[2:4])  # 輸出: "banana" "cherry" "date"

負索引

在R中,您可以使用負索引來排除元素:

# 排除第二個元素
print(fruits[-2])  # 輸出: "apple" "cherry" "date"

# 排除多個元素
print(fruits[c(-1, -3)])  # 輸出: "banana" "date"

邏輯索引

您也可以使用邏輯向量來讀取元素:

numbers <- c(1, 2, 3, 4, 5)

# 讀取偶數
print(numbers[numbers %% 2 == 0])  # 輸出: 2 4

# 讀取大於3的數字
print(numbers[numbers > 3])  # 輸出: 4 5

向量操作

現在我們可以創建和訪問向量了,讓我們學習如何操作它們。

向量算術

您可以在向量上進行算術操作:

vec1 <- c(1, 2, 3)
vec2 <- c(4, 5, 6)

# 加法
print(vec1 + vec2)  # 輸出: 5 7 9

# 乘法
print(vec1 * vec2)  # 輸出: 4 10 18

# 除法
print(vec2 / vec1)  # 輸出: 4 2.5 2

向量循環

當對不同長度的向量進行操作時,R會循環使用較短的向量:

short_vec <- c(1, 2)
long_vec <- c(1, 2, 3, 4, 5, 6)

print(short_vec + long_vec)  # 輸出: 2 4 4 6 6 8

R會重複較短的向量以匹配較長向量的長度。

向量函數

R提供了許多有用的函數來操作向量:

numbers <- c(5, 2, 8, 1, 9)

# 向量的長度
print(length(numbers))  # 輸出: 5

# 所有元素的總和
print(sum(numbers))  # 輸出: 25

# 向量的平均值
print(mean(numbers))  # 輸出: 5

# 對向量進行排序
print(sort(numbers))  # 輸出: 1 2 5 8 9

這裡有一個表總結了一些常見的向量函數:

函數 描述
length() 返回向量中的元素數量
sum() 計算所有元素的總和
mean() 計算向量的平均值
median() 找到中位數
max() 返回最大值
min() 返回最小值
sort() 對向量進行升序排序
rev() 將元素的順序顛倒

結論

恭喜你!你已經開始踏上了R語言向量世界的第一步。我們已經介紹了創建、訪問和基本操作。記住,熟練需要練習,所以不要猶豫去嘗試這些概念。

向量是R語言中數據操作的基本組成部分,掌握它們將為你的R語言編程之旅鋪平道路。持續探索,持續編程,最重要的是,享受樂趣!

Credits: Image by storyset