Chuyển đến nội dung chính

Mảng trong R

Tìm hiểu về Mảng trong R, bao gồm đánh chỉ mục với ví dụ, cùng cách tạo và cộng ma trận và hàm apply().
Đã cập nhật 5 thg 10, 2026  · 8 phút đọc

Khám phá cùng AI

ChatGPTClaudePerplexity

Mảng là một cấu trúc dữ liệu có thể chứa dữ liệu đa chiều. Trong R, mảng là các đối tượng có thể chứa dữ liệu hai chiều hoặc nhiều hơn. Ví dụ, trong ma trận vuông có thể có hai hàng và hai cột và số chiều có thể là năm. Mảng chỉ lưu trữ các giá trị có cùng kiểu dữ liệu. Dữ liệu có thể có nhiều hơn một chiều, với các hàng, cột và số chiều có độ dài nhất định.

Tạo mảng

Hàm array() sẽ tạo một mảng, nhận một vector là các số và kích thước ("dim") trong tham số.

Hãy xem ví dụ dưới đây, nơi hai vector tên là 'array1' và 'array2' được tạo.

vector1 =  c (5, 10, 15,20)
vector2 =  c (25, 30, 35, 40, 45, 50,55,60)

Bạn có thể dùng hai vector ở trên làm đầu vào cho một mảng với kích thước 4 * 4, và hai ma trận hoặc dữ liệu nhiều chiều được tạo ra.

final = array (c (array1, array2),dim =c(4,4,3))
print (final)

Kết quả của đoạn mã trên như sau:

, , 1

     [,1] [,2] [,3] [,4]
[1,]    5   25   45    5
[2,]   10   30   50   10
[3,]   15   35   55   15
[4,]   20   40   60   20

, , 2

     [,1] [,2] [,3] [,4]
[1,]   25   45    5   25
[2,]   30   50   10   30
[3,]   35   55   15   35
[4,]   40   60   20   40

, , 3

     [,1] [,2] [,3] [,4]
[1,]   45    5   25   45
[2,]   50   10   30   50
[3,]   55   15   35   55
[4,]   60   20   40   60

Hãy đổi tên mảng thành "Arr1" và "Arr2" bằng "matrix.names". Đồng thời, tên hàng đổi thành ("row1","row2") và tên cột đổi thành ("column1","column2","column3") tương ứng. Kích thước của ma trận là 2 hàng và 3 cột.

array1 =  c (9 , 18 )
array2 = c (27,36)
r.names = c ("column1","column2","column3")
c.names = c ("row1","row2")
m.names = c ("Arr1", "Arr2")

final = array (c (array1,array2), dim=c (2,3,2), dimnames=list (c.names, r.names, m.names))
print(final)

Kết quả của đoạn mã trên như dưới đây, với hai hàng và ba cột. Ngoài ra, giá trị trong cột được lặp lại khi điền hết một lượt:

, , Arr1

     column1 column2 column3
row1       9      27       9
row2      18      36      18

, , Arr2

     column1 column2 column3
row1      27       9      27
row2      36      18      36

Đánh chỉ mục (Indexing) trong mảng

Mảng gồm các phần tử theo cách đa chiều, trong đó mỗi phần tử có thể được truy cập để thao tác. Các phần tử có thể được đánh chỉ mục bằng '[]', trong đó mảng giống ma trận gồm các hàng và cột có thể được đánh chỉ mục theo: mat[row, column]

Hãy xem ví dụ dưới đây, nơi mảng chứa đầu vào vector từ 1 đến 9. Chỉ có ba hàng và ba cột, trong đó các giá trị từ 1 đến 9 được đưa vào. 'c.names)' là tên cột mới có các vector ('c1', 'c2', 'c3') và 'r.names' là tên hàng mới ('r1', 'r2', 'r3') cũng là vector.

a1=  c (1,2,3,4)
a2= c (5,6,7,8,9)
r.names = c ("c1","c2","c3")
c.names = c ("r1","r2","r3")
m.names = c ("first")

arr = array (c (a1,a2), dim=c (3,3,1), dimnames=list (c.names, r.names, m.names))
print(arr)
, , first

   c1 c2 c3
r1  1  4  7
r2  2  5  8
r3  3  6  9

Kết quả của đoạn mã trên như sau:

 , , first

   c1 c2 c3
r1  1  4  7
r2  2  5  8
r3  3  6  9 

Bạn có thể thấy ma trận từ 1 đến 9 được tạo với dạng kích thước 3 3 (hàng cột), và tên hàng cùng tên cột đã thay đổi.

Hãy xem cách trích xuất các phần tử trong mảng qua các ví dụ sau.

  1. Hãy trích xuất số '7' từ mảng 'arr' ở trên.
arr[1,3,1]

7

Kết quả của đoạn mã trên là 7. Bên trong 'arr[1,3,1]' là hàng 1 với cột 3 và 1 là mảng đầu tiên 'arr' được trích xuất.

  1. Để truy cập 1, 'arr[1,1,1]' là hàng 1 với cột 1 và 1 là mảng đầu tiên 'arr' được trích xuất.
arr[1,1,1]

1

Kết quả của đoạn mã trên là 1.

  1. Để truy cập nhiều giá trị cùng lúc, bạn cần chỉ định phạm vi mong muốn.
arr[1:2,1:2,1]
  c1 c2
r1 1 4
r2 2 5

Đoạn mã trên cho kết quả như dưới đây, trong đó các giá trị gồm 2 hàng, 2 cột và 1 là mảng đầu tiên 'arr' được trích xuất:

    c1    c2
r1    1    4
r2    2    5 
  1. Bạn có thể truy cập toàn bộ mảng 'arr' với cú pháp sau, nơi 'arr[ , ,1]' chỉ định bao gồm tất cả hàng và cột, mỗi phần cách nhau bằng dấu phẩy, được biểu thị bằng khoảng trống. Số 1 chỉ định mảng 'arr' cần trích xuất.
arr[ , ,1]
  c1 c2 c3
r1 1 4 7
r2 2 5 8
r3 3 6 9

Đoạn mã trên cho kết quả như dưới đây, nơi tất cả phần tử đều có mặt:

    c1    c2    c3
r1    1    4    7
r2    2    5    8
r3    3    6    9 
  1. Bạn có thể lấy toàn bộ hàng thứ hai bằng đoạn mã sau, nơi arr[2, ,1] lấy hàng thứ hai với khoảng trống, và 1 là 'arr' cần trích xuất.
arr[2,,1]
c1
2
c2
5
c3
8

Đoạn mã trên cho kết quả như dưới đây và cũng in ra c1, c2, c3.

c1 2
c2 5
c3 8
  1. Bạn có thể lấy toàn bộ cột thứ hai bằng đoạn mã sau, nơi arr[,2,1] khoảng trống với 2 là cột thứ hai, và 1 là 'arr' cần trích xuất.
mat[ ,2,1]
r1
4
r2
5
r3
6

Đoạn mã trên cho kết quả như dưới đây và cũng in ra r1, r2, r3.

r1 4
r2 5
r3 6

Tạo và cộng ma trận

Hãy tạo hai ma trận tên mat1 và mat2 từ 'arr[ , ,1]' nơi toàn bộ hàng và cột từ 'arr' được sao chép.

mat1 = arr[,,1]
mat2 = arr[,,1]
   c1 c2 c3
r1  2  8 14
r2  4 10 16
r3  6 12 18 

Cộng hai ma trận 'mat1' và 'mat2' và lưu kết quả vào final. Kết quả cũng được in ra.

final <- mat1+mat2
print(final)

Kết quả dưới đây cho thấy mỗi hàng và cột của mat1 và mat2 được cộng tương ứng với nhau.

   c1 c2 c3
r1  2  8 14
r2  4 10 16
r3  6 12 18 

apply()

'apply()' là một trong các gói R có nhiều hàm giúp bạn viết mã dễ dàng và hiệu quả hơn. Bạn sẽ thấy ví dụ dưới đây nơi nó được dùng để tính tổng của hai mảng khác nhau.

Cú pháp của apply() là:
apply(x, margin, function)

Các tham số trên cho biết:
x: Một mảng hoặc dữ liệu hai chiều dạng ma trận.
margin: Chỉ định cách áp dụng hàm theo giá trị c(1) cho hàng, c(2) cho cột và c(1,2) cho cả hàng và cột.
function: Chỉ định hàm dựng sẵn của R hoặc hàm do người dùng định nghĩa để áp dụng lên dữ liệu đã cho.

Hãy tạo một vector tên 'array1' có độ dài ba và 'array2' có độ dài sáu bằng đoạn mã sau.

array1 = c(5,10,15)
array2 = c(15,20,25,30,35,40)

Bạn có thể thấy bên dưới, 'array()' nhận hai vector tên 'array1' và 'array2' với kích thước 3 hàng, 3 cột, và 2 ma trận được tạo ra rồi lưu vào 'my. Array'.

my.Array <- array(c(array1,array2),dim = c(3,3,2))
print(my.Array)
, , 1

     [,1] [,2] [,3]
[1,]    5   15   30
[2,]   10   20   35
[3,]   15   25   40

, , 2

     [,1] [,2] [,3]
[1,]    5   15   30
[2,]   10   20   35
[3,]   15   25   40

Đoạn mã trên cho kết quả sau, nơi hai ma trận được tạo với kích thước 3 3 (hàng cột).

, , 1

     [,1] [,2] [,3]
[1,]    5   15   30
[2,]   10   20   35
[3,]   15   25   40

, , 2

     [,1] [,2] [,3]
[1,]    5   15   30
[2,]   10   20   35
[3,]   15   25   40

'apply()' được dùng dưới đây để tính tổng của hai ma trận theo từng cột.

final <- apply(my.Array, c(2), sum)
print(final)
[1]  60 120 210

Bạn có thể thấy ở trên, c(2) cho margin được dùng để cộng các phần tử của ma trận trong 'my. Array' theo cột nhằm thu được kết quả sau.

60 120 210

Cuối cùng, 'apply()' được dùng dưới đây để tính tổng của hai ma trận theo từng hàng.

final <- apply(my.Array, c(1), sum)
print(final)
[1] 100 130 160

Bạn có thể thấy ở trên, c(1) cho margin được dùng để cộng các phần tử của ma trận trong 'my. Array' theo hàng nhằm thu được kết quả sau.

100 130 160

Chúc mừng

Chúc mừng bạn đã hoàn thành hướng dẫn này!

Bạn đã tìm hiểu về Mảng trong R cùng cách tạo, đánh chỉ mục trong mảng với ví dụ, cũng như cách tạo và cộng ma trận cùng với hàm apply().

Nếu bạn muốn học thêm về R, hãy học khóa Giới thiệu về R của DataCamp.

Tài liệu tham khảo:
R-Arrays
Hàm mảng trong R và cách tạo mảng trong R

Chủ đề
R
Khoa học Dữ liệu

Khóa học R

Khóa học

Nhập môn Ngôn ngữ lập trình R

4 giờ
3.1M
Nắm vững kiến thức cơ bản về phân tích dữ liệu trong R, gồm vectors, lists và data frames; luyện tập R với các data set thực tế.
Xem chi tiếtRight Arrow
Bắt Đầu Khóa Học
Xem thêmRight Arrow
Liên quan

blog

Claude Opus 4.6: Tính năng, Điểm chuẩn, Bài kiểm tra thực hành và hơn thế nữa

Mô hình mới nhất của Anthropic dẫn đầu ở mã hóa tác tử và lập luận phức tạp. Thêm vào đó, nó có cửa sổ ngữ cảnh 1M.
Matt Crabtree's photo

Matt Crabtree

10 phút

Xem ThêmXem Thêm