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 6Thê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 6Chỉ 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] 6rbind() 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 2Thử 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")
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
1Chuỗi chuyên sâu
Chuỗi con với substr()Định dạng với sprintf()Tách và nối chuỗiTìm kiếm trong chuỗiThay thế văn bảnÔn tập: Tạo tên người dùng10Luồng điều khiển nâng cao
Hàm switch()ifelse() dạng vector hóarepeat và breakHàm đệ quyÔn tập: phân loại điểmTự luyện tập: Trình biên dịch R online