创建矩阵
本课属于 Coddy R 学习旅程的“逻辑与流程”单元。第 17 课,共 64 课。
矩阵是按行和列排列的向量,其中每个值的类型都相同。默认情况下,matrix(data, nrow = ...)会按列填充矩阵:
m <- matrix(1:6, nrow = 2)
print(m)输出:
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6添加 byrow = TRUE,让它按行填充,这与每行写一行数据的方式相符:
m <- matrix(1:6, nrow = 2, byrow = TRUE)
print(m)输出:
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6指定 nrow 或 ncol 即可;R 会根据数据长度计算另一个值。
dim(m) 返回行数和列数,nrow() 和 ncol() 则分别单独返回行数和列数。matrix(0, nrow = 2, ncol = 3) 会重复单个值来填充矩阵:
m <- matrix(0, nrow = 2, ncol = 3)
print(dim(m))
print(nrow(m) * ncol(m))
print(length(m))输出:
[1] 2 3
[1] 6
[1] 6rbind() 将向量按行堆叠,cbind() 则按列堆叠,从而用多个向量构建矩阵:
a <- c(1, 2, 3)
b <- c(4, 5, 6)
print(rbind(a, b))
print(dim(cbind(a, b)))输出:
[,1] [,2] [,3]
a 1 2 3
b 4 5 6
[1] 3 2挑战
简单完成 make_grid(values, n_cols)。返回一个有 n_cols 列的矩阵,并按行存放 values。值的数量始终是 n_cols 的倍数。
提供的代码会将值作为逗号分隔的一行读取,并从下一行读取 n_cols。它会将返回矩阵的每一行分别打印在单独的一行上,然后打印其大小,格式为 rows x columns。
亲手试试
make_grid <- function(values, n_cols) {
# 在这里写你的代码
matrix(values)
}
# 提供的输入输出代码:保持原样
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")
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: R 在线编译器