# Hướng dẫn cơ bản về cấu trúc dữ liệu mạnh mẽ: Mảng trong R

Xin chào các bạn, những người học lập trình R! Tôi rất vui mừng được làm hướng dẫn viên của bạn trong hành trình thú vị vào thế giới của các mảng R. Với hơn một thập kỷ giảng dạy khoa học máy tính, tôi có thể đảm bảo với bạn rằng các mảng giống như những cây đa năng của lập trình - linh hoạt, mạnh mẽ và hoàn toàn cần thiết để thành thạo. Vậy, chúng ta cùng bắt đầu nào!

## Mảng là gì?

Trước khi chúng ta đi vào chi tiết, hãy bắt đầu từ những điều cơ bản. Hãy tưởng tượng bạn có một bộ sách. Bạn có thể堆积 chúng lại thành một đống, nhưng sẽ rất khó khăn để tìm một cuốn sách cụ thể. Bây giờ, hãy tưởng tượng một kệ sách với nhiều ngăn và kệ. Đó chính là bản chất của một mảng trong R - một cách tổ chức và lưu trữ dữ liệu có cấu trúc.

Trong R, một mảng là một cấu trúc dữ liệu đa chiều có thể chứa dữ liệu cùng loại. Nó giống như một phiên bản siêu năng lực của một vector, có khả năng lưu trữ dữ liệu ở nhiều chiều.

### Ví dụ: Tạo mảng đầu tiên của bạn

Hãy tạo mảng đầu tiên của chúng ta! Chúng ta sẽ sử dụng hàm `array()` để làm điều này.

```r
my_first_array <- array(1:24, dim = c(4, 3, 2))
print(my_first_array)

Khi bạn chạy đoạn mã này, bạn sẽ thấy điều gì đó như sau:

R - Arrays

, , 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

Vừa rồi发生了什么? Chúng ta đã tạo một mảng 3 chiều! Hãy tưởng tượng nó như hai ma trận 4x3 chồng lên nhau. Phần dim = c(4, 3, 2)告诉 R tạo một mảng với 4 hàng, 3 cột và 2 "lớp" hoặc ma trận.

Đặt tên cho các cột và hàng

Giống như chúng ta đánh dấu kệ sách để dễ dàng tìm kiếm sách hơn, chúng ta cũng có thể đặt tên cho các chiều của mảng. Điều này làm cho dữ liệu của chúng ta có ý nghĩa hơn và dễ dàng làm việc hơn.

# Tạo một mảng với các chiều có tên
student_scores <- array(
  c(85, 90, 78, 92, 88, 76, 95, 87, 82),
  dim = c(3, 3),
  dimnames = list(
    c("Alice", "Bob", "Charlie"),
    c("Toán", "Khoa học", "Tiếng Anh")
  )
)

print(student_scores)

Kết quả:

        Toán Khoa học Tiếng Anh
Alice    85      88      95
Bob      90      76      87
Charlie  78      92      82

Bây giờ mảng của chúng ta có các tên hàng và cột có ý nghĩa. Nó dễ dàng hơn nhiều để hiểu rằng Alice đã đạt 85 điểm trong Toán và 95 điểm trong Tiếng Anh!

Truy cập các phần tử của mảng

Bây giờ chúng ta đã có mảng của mình, làm thế nào chúng ta có thể lấy thông tin cụ thể từ nó? Nó giống như biết chính xác哪一层 và哪一部分 để xem trong tủ sách của chúng ta.

# Truy cập một phần tử duy nhất
print(student_scores["Alice", "Toán"])  # Kết quả: 85

# Truy cập toàn bộ hàng
print(student_scores["Bob", ])  # Kết quả: Toán 90 Khoa học 76 Tiếng Anh 87

# Truy cập toàn bộ cột
print(student_scores[, "Khoa học"])  # Kết quả: Alice 88 Bob 76 Charlie 92

Chỉnh sửa các phần tử của mảng

Mảng không chỉ để lưu trữ dữ liệu - chúng ta cũng có thể thay đổi chúng. Hãy cập nhật một số điểm số:

# Cập nhật một điểm số duy nhất
student_scores["Charlie", "Tiếng Anh"] <- 89
print(student_scores["Charlie", "Tiếng Anh"])  # Kết quả: 89

# Cập nhật toàn bộ hàng
student_scores["Alice", ] <- c(91, 93, 97)
print(student_scores["Alice", ])  # Kết quả: Toán 91 Khoa học 93 Tiếng Anh 97

Tính toán trên các phần tử của mảng

Một trong những tính năng mạnh mẽ nhất của mảng là khả năng thực hiện các phép toán trên các phần tử của chúng. Hãy tính toán một số điểm trung bình:

# Tính điểm trung bình cho mỗi học sinh
student_averages <- apply(student_scores, 1, mean)
print(student_averages)

# Tính điểm trung bình cho mỗi môn học
subject_averages <- apply(student_scores, 2, mean)
print(subject_averages)

Hàm apply() giống như một cây đa năng cho mảng. Tham số thứ hai (1 hoặc 2)告诉 R áp dụng hàm (trong trường hợp này là mean) cho các hàng (1) hoặc các cột (2).

Các phương thức mảng

Dưới đây là bảng các phương thức mảng thường được sử dụng trong R:

Phương thức Mô tả Ví dụ
array() Tạo một mảng array(1:12, dim = c(3, 4))
dim() Lấy hoặc đặt kích thước của mảng dim(my_array)
length() Lấy tổng số phần tử length(my_array)
dimnames() Lấy hoặc đặt tên của các chiều dimnames(my_array)
apply() Áp dụng một hàm trên các mép của mảng apply(my_array, 2, sum)
sweep() Xóa các tóm tắt của mảng sweep(my_array, 2, colMeans(my_array))

Kết luận

Chúc mừng! Bạn đã chính thức bước vào thế giới mạnh mẽ của các mảng R. Chúng ta đã cùng nhau tạo ra các mảng, đặt tên cho các chiều của chúng, truy cập và chỉnh sửa các phần tử, và thậm chí thực hiện các phép toán trên chúng.

Nhớ rằng, việc học cách làm việc với các mảng giống như việc tổ chức một thư viện. Ban đầu, nó có thể看起来 phức tạp, nhưng một khi bạn đã quen thuộc với nó, bạn sẽ ngạc nhiên trước hiệu quả mà bạn có thể lưu trữ, truy cập và phân tích dữ liệu của mình.

Trong hành trình tiếp theo của bạn với R, bạn sẽ thấy các mảng xuất hiện ở khắp mọi nơi - từ phân tích dữ liệu đơn giản đến các mô hình thống kê phức tạp. Vậy hãy tiếp tục thực hành, 保持好奇心, và đừng ngại thử nghiệm. Chúc bạn may mắn và hy vọng rằng các mảng của bạn luôn được tổ chức tốt!

Credits: Image by storyset