目录
1.array
2.matrix
3.data.matrix
4.lower.tri
5.mat.or.vec
6.t:转置矩阵
7.cbind
8.rbind
9.diag
10.aperm:对数组进行轴置换(维度重排)操作
11.%*%:乘法操作要求矩阵 A 的列数等于矩阵 B 的行数
12.crossprod:用于计算矩阵的交叉积
13.outer
14.Kronecker
15. apply
16.tapply
17.sweep:对矩阵的某个维度进行操作
18.aggregate
19.scale
20.matplot
21.cor
22.Contrast,row,col
1.array
array(data, dim = NULL, dimnames = NULL)
data
:填充数组的数据向量或矩阵。dim
:指定数组的维度,即一个整数向量。例如,dim = c(3, 4, 2)
表示创建一个3行、4列、2个深度(即三维)的数组。dimnames
:指定数组维度的名称,通常是一个包含维度名称的列表。每个元素可以是字符向量,用于为相应维度的标签命名。
(1)创建一个二维数组
arr_2d <- array(data = c(1, 2, 3, 4), dim = c(2, 2))
(2)创建一个三维数组
arr_3d <- array(data = c(1, 2, 3, 4, 5, 6), dim = c(2, 3, 1))
(3)创建一个具有维度名称的数组
arr_named <- array(data = c(1, 2, 3, 4), dim = c(2, 2), dimnames = list(c("row1", "row2"), c("col1", "col2")))
2.matrix
matrix(data, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL)
data
:用于填充矩阵的数据向量或矩阵。nrow
:指定矩阵的行数。ncol
:指定矩阵的列数。byrow
:逻辑值,指定是否按行填充矩阵,默认为FALSE
表示按列填充。dimnames
:矩阵维度的名称。
# 创建一个2行3列的矩阵
mat <- matrix(data = c(1, 2, 3, 4, 5, 6), nrow = 2, ncol = 3)
3.data.matrix
# 创建一个数据框
df <- data.frame(a = c(1, 2, 3),
b = c(4, 5, 6),
c = c(7, 8, 9))
# 将数据框转换为数值型矩阵
mat <- data.matrix(df)
# 打印输出结果
print(mat)
4.lower.tri
# 创建一个3x3的矩阵
mat <- matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9), nrow = 3)
# 提取矩阵的下三角部分
lower_tri <- lower.tri(mat)
# 打印输出结果
print(lower_tri)
5.mat.or.vec
# 生成一个2行3列的零矩阵
m <- mat.or.vec(nr = 2, nc = 3)
# 生成一个含有5个元素的零向量
v <- mat.or.vec(nr = 5, nc = 1)
6.t:转置矩阵
# 创建一个3x2的矩阵
mat <- matrix(c(1, 2, 3, 4, 5, 6), nrow = 3)
# 对矩阵进行转置
transposed_mat <- t(mat)
# 打印输出结果
print(transposed_mat)
7.cbind
# 创建两个向量
v1 <- c(1, 2, 3)
v2 <- c(4, 5, 6)
# 将两个向量按列合并
result <- cbind(v1, v2)
# 打印输出结果
print(result)
8.rbind
# 创建两个向量
v1 <- c(1, 2, 3)
v2 <- c(4, 5, 6)
# 将两个向量按行合并
result <- rbind(v1, v2)
# 打印输出结果
print(result)
9.diag
获取对角矩阵元素
# 创建一个3x3的矩阵
mat <- matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9), nrow = 3)
# 获取矩阵的对角元素向量
diag_vec <- diag(mat)
# 打印输出结果
print(diag_vec)
#输出 [1] 1 5 9
生成对角矩阵
# 创建一个5x5的对角矩阵,对角线上的元素为1
diag_mat <- diag(1, nrow = 5)
# 打印输出结果
print(diag_mat)
10.aperm:对数组进行轴置换(维度重排)操作
# 创建一个3x4x2的三维数组
arr <- array(1:24, dim = c(3, 4, 2))第一个维度行数,第二个维度列数,第三个维度层数
# 对数组进行轴置换,重新排列维度
permuted_arr <- aperm(arr, perm = c(3, 2, 1))
#将第一个元素排在最后,第二个元素排在中间,第三个元素排在第一个,即(2,4,3)
# 打印输出结果
print(permuted_arr)
11.%*%:乘法操作要求矩阵 A 的列数等于矩阵 B 的行数
# 创建两个矩阵
A <- matrix(c(1, 2, 3, 4), nrow = 2, ncol = 2)
B <- matrix(c(5, 6, 7, 8), nrow = 2, ncol = 2)
# 执行矩阵乘法
C <- A %*% B
# 打印结果
print(C)
矩阵A
[,1] [,2]
[1,] 1 3
[2,] 2 4
矩阵B[,1] [,2]
[1,] 5 7
[2,] 6 8
矩阵乘法运算
c_11 = (1*5) + (3*6) = 5 + 18 = 23#A的第一行,B的第一列
c_12 = (1*7) + (3*8) = 7 + 24 = 31#A的第一行,B的第二列
c_21 = (2*5) + (4*6) = 10 + 24 = 34#A的第二行,B的第一列
c_22 = (2*7) + (4*8) = 14 + 32 = 46#A的第二行,B的第二列
矩阵C的值
[,1] [,2]
[1,] 23 31
[2,] 34 46
12.crossprod:用于计算矩阵的交叉积
# 创建向量
x <- c(1, 2, 3)
y <- c(4, 5, 6)
# 计算向量的内积
result <- crossprod(x, y)
# 打印结果
print(result)
[,1]
[1,] 32计算过程:
[1, 2, 3] * [4, 5, 6] = (1 * 4) + (2 * 5) + (3 * 6) = 4 + 10 + 18 = 32
# 创建矩阵
A <- matrix(c(1, 2, 3, 4), nrow = 2, ncol = 2)
# 计算矩阵的交叉积
result <- crossprod(A)
# 打印结果
print(result)
矩阵A
[,1] [,2]
[1,] 1 3
[2,] 2 4
转置后的矩阵A[,1] [,2]
[1,] 1 2
[2,] 3 4[,1] [,2]
[1,] 1*1 + 2*2 1*3 + 2*4
[2,] 3*1 + 4*2 3*3 + 4*4
[,1] [,2]
[1,] 5 11
[2,] 11 25
13.outer
# 创建向量
x <- c(1, 2, 3)
# 计算向量元素之间的外积
result <- outer(x, x)
# 打印结果
print(result)
#矩阵中的第 i 行和第 j 列的元素是向量 x 中的第 i 个元素与第 j 个元素的乘积。
[,1] [,2] [,3]
[1,] 1*1 1*2 1*3
[2,] 2*1 2*2 2*3
[3,] 3*1 3*2 3*3
14.Kronecker
# 创建两个矩阵
A <- matrix(c(1, 2, 3, 4), nrow = 2)
B <- matrix(c(5, 6, 7, 8), nrow = 2)
# 计算Kronecker积
result <- kronecker(A, B)
# 打印结果
print(result)
[,1] [,2] [,3] [,4]
[1,] 1*5 1*6 2*5 2*6#第一列*第一列
[2,] 1*7 1*8 2*7 2*8#第一列*第二列
[3,] 3*5 3*6 4*5 4*6#第二列*第一列
[4,] 3*7 3*8 4*7 4*8#第二列*第二列
15. apply
apply(X, MARGIN, FUN)
X
是要操作的矩阵或数组
MARGIN
指定要应用函数的维度(1表示行,2表示列,其他值表示整个维度)
FUN
是要应用的函数。
# 创建一个矩阵
X <- matrix(1:9, nrow = 3)
# 对每一行求和
row_sums <- apply(X, 1, sum)
print(row_sums)
# 对每一列取平均值
col_means <- apply(X, 2, mean)
print(col_means)
# 对整个矩阵进行乘法运算
matrix_product <- apply(X, c(1, 2), function(x) x * 2)
print(matrix_product)
[1] 6 15 24
[1] 2 5 8
[,1] [,2] [,3]
[1,] 2 8 18
[2,] 4 10 20
[3,] 6 12 22
16.tapply
tapply(X, INDEX, FUN)
X
是要操作的向量或矩阵
INDEX
是一个或多个因子,用于指定分组依据
FUN
是要应用的函数。
# 创建一个向量
x <- c(1, 2, 3, 4, 5, 6)
# 定义一个因子,用于分组
group <- c("A", "B", "A", "B", "A", "B")
# 对向量按照因子进行分组,并对每个组求和
result <- tapply(x, group, sum)
print(result)
A B
9 12
17.sweep:对矩阵的某个维度进行操作
sweep(x, MARGIN, STATS, FUN = "-", ...)
x
是要进行操作的矩阵
MARGIN
指定要操作的维度(1为行,2为列)
STATS
是要进行操作的向量或矩阵;FUN
是要应用的函数,它将用于在矩阵的指定维度上进行操作,默认为减法(-
)。
# 创建一个矩阵
x <- matrix(1:6, nrow = 2)
# 创建一个要进行操作的向量
stats <- c(3, 2)
# 对矩阵的每一列进行减法操作
result <- sweep(x, 2, stats, FUN = "-")
print(result)
每个元素-2
[,1] [,2]
[1,] -2 -1
[2,] -1 0
18.aggregate
aggregate(formula, data, FUN, ...)
formula
是一个公式,指定了要汇总的变量和分组因子
data
是包含要汇总的数据的数据框
FUN
是要应用的函数
sum()
: 求和mean()
: 平均值median()
: 中位数min()
: 最小值max()
: 最大值length()
: 长度(计数)
# 创建一个数据框
df <- data.frame(
group = c("A", "A", "B", "B", "A", "B"),
value = c(1, 2, 3, 4, 5, 6)
)
# 对数据框按照 group 列进行分组,并对每个组计算平均值
result <- aggregate(value ~ group, data = df, FUN = mean)
print(result)
group value
1 A 2.666667
2 B 4.333333
19.scale
scaled_data <- scale(x, center = TRUE, scale = TRUE)
x
是要进行标准化处理的向量、矩阵或数据框;
center
参数用于指定是否进行中心化,默认为TRUE
,表示进行中心化;
scale
参数用于指定是否进行缩放,默认为TRUE
,表示进行缩放。
# 创建一个矩阵
x <- matrix(c(1, 2, 3, 4, 5, 6), nrow = 3)
# 对矩阵按列进行标准化处理
scaled_data <- scale(x, center = TRUE, scale = TRUE)
print(scaled_data)
#通过标准化处理,每列的均值被转换成了 0,标准差变成了 1
#第一列的标准化结果是
[-1.2247449, 0.0000000, 1.2247449]
#第二列的标准化结果也是
[-1.2247449, 0.0000000, 1.2247449]
。[,1] [,2]
[1,] -1.2247449 -1.2247449
[2,] 0.0000000 0.0000000
[3,] 1.2247449 1.2247449
20.matplot
matplot(x, y = NULL, type = "l", lty = 1, lwd = 1, col = 1, pch = NULL, ...)
x
是一个矩阵或数据框,它的每列(或每行)代表一个变量;
y
是一个可选参数,当x
为单个矩阵时,y
可以为 NULL,当x
为两个矩阵时,y
表示第二个矩阵;
type
参数指定绘图类型,可以是 "l"(线图)或 "p"(点图);
lty
、lwd
、col
和pch
分别指定线型、线宽、颜色和点的形状等。
# 创建一个矩阵
x <- matrix(c(1, 2, 3, 4, 5, 6), nrow = 3)
# 使用 matplot() 绘制线图
matplot(x, type = "l", lwd = 2, col = c("red", "blue"), xlab = "X", ylab = "Y")
21.cor
cor(x, y = NULL, use = "everything", method = c("pearson", "kendall", "spearman"))
x
和y
是要计算相关系数的向量、矩阵或数据框;
use
参数用于指定处理缺失值的方式,默认为"everything"
,表示包括所有的缺失值;method
参数用于指定使用的相关系数类型,默认为"pearson"
,还可以是"kendall"
(肯德尔相关系数)或"spearman"
(斯皮尔曼相关系数)。
# 创建两个向量
x <- c(1, 2, 3, 4, 5)
y <- c(2, 4, 6, 8, 10)
# 使用 cor() 计算两个向量的相关系数
correlation <- cor(x, y)
print(correlation)
[1] 1
向量
x
和y
是完全正相关的,相关系数为 1。
22.Contrast,row,col
#假设有一个包含销售数据的矩阵,其中行表示不同的产品,列表示不同的地区。
Contrast:对照矩阵:其每一行代表一种对照或比较,每一列表示一种变量或影响因素。对照矩阵描述了不同对照之间的差异
row:矩阵的行下标集:可以使用行下标集来选择该产品所在的行
col:求列下标集 :使用列下标集来选择这几个地区所在的列。
整理不易,若有遗漏或错误,请大佬们不吝赐教!!❤❤❤