Menu
CoddyTech

Tạo ma trận

Thuộc phần Logic và luồng điều khiển trong hành trình R của Coddy. Bài học 17 trên 64.

Ma trận là một vectơ được sắp xếp thành các hàng và cột, trong đó mọi giá trị đều có cùng kiểu dữ liệu. Theo mặc định, matrix(data, nrow = ...) điền dữ liệu vào ma trận theo từng cột:

m <- matrix(1:6, nrow = 2)
print(m)

Đầu ra:

     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

Thêm byrow = TRUE để điền lần lượt theo từng hàng, phù hợp với dữ liệu được viết mỗi hàng trên một dòng:

m <- matrix(1:6, nrow = 2, byrow = TRUE)
print(m)

Đầu ra:

     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6

Chỉ cần chỉ định nrow hoặc ncol; R sẽ tính giá trị còn lại dựa trên độ dài của dữ liệu.

dim(m) trả về số hàng và số cột, còn nrow() và ncol() lần lượt trả về số hàng hoặc số cột. matrix(0, nrow = 2, ncol = 3) lặp lại một giá trị để điền đầy ma trận:

m <- matrix(0, nrow = 2, ncol = 3)
print(dim(m))
print(nrow(m) * ncol(m))
print(length(m))

Đầu ra:

[1] 2 3
[1] 6
[1] 6

rbind() xếp các vector thành hàng và cbind() thành cột, qua đó tạo ma trận từ các vector riêng biệt:

a <- c(1, 2, 3)
b <- c(4, 5, 6)
print(rbind(a, b))
print(dim(cbind(a, b)))

Đầu ra:

  [,1] [,2] [,3]
a    1    2    3
b    4    5    6
[1] 3 2
challenge icon

Thử thách

Dễ

Hoàn thành make_grid(values, n_cols). Trả về một ma trận có n_cols cột, chứa values theo từng hàng. Số lượng giá trị luôn là bội số của n_cols.

Đoạn code được cung cấp đọc các giá trị từ một dòng phân tách bằng dấu phẩy và đọc n_cols từ dòng tiếp theo. Đoạn code in mỗi hàng của ma trận được trả về trên một dòng riêng, sau đó in kích thước dưới dạng rows x columns.

Tự làm thử

make_grid <- function(values, n_cols) {
  # Viết code của bạn ở đây
  matrix(values)
}

# Đoạn code đầu vào và đầu ra có sẵn: giữ nguyên
input <- suppressWarnings(readLines(file("stdin")))
values <- as.numeric(strsplit(input[1], ",")[[1]])
m <- make_grid(values, as.numeric(input[2]))
for (i in seq_len(nrow(m))) cat(m[i, ], "\n")
cat(nrow(m), "x", ncol(m), "\n")
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng điều khiển

Tự luyện tập: Trình biên dịch R online