如何在 R 中将矩阵的列除以向量的元素?
假设我们有一个向量 V,它包含五个元素,以及一个矩阵 M,它有五列。现在假设我们想要将 M 中的每一列除以向量 V 中相应的元素,这意味着 M 中的第一列将除以 V 中的第一个值,以此类推,那么我们可以使用 sweep 函数,如下所示:
sweep(M,2,V,FUN="/")
示例 1
考虑以下矩阵和向量:
M1<-matrix(rpois(80,10),ncol=4) M1
创建了以下数据框
[,1] [,2] [,3] [,4] [1,] 9 15 10 12 [2,] 9 11 10 10 [3,] 9 11 11 4 [4,] 10 13 11 10 [5,] 9 12 7 7 [6,] 8 9 9 16 [7,] 7 9 12 8 [8,] 12 7 13 11 [9,] 16 8 10 6 [10,] 12 10 7 9 [11,] 14 9 12 10 [12,] 10 8 5 11 [13,] 8 13 8 10 [14,] 8 5 7 8 [15,] 10 14 8 13 [16,] 7 10 9 7 [17,] 11 9 10 12 [18,] 15 11 17 8 [19,] 6 16 14 14 [20,] 12 6 13 8
为了将 M1 的列除以上面创建的数据框中 V1 中相应的元素,请将以下代码添加到上面代码段中:
M1<-matrix(rpois(80,10),ncol=4) V1<-1:4 sweep(M1,2,V1,FUN="/")
输出
如果您将以上所有代码段作为单个程序执行,则会生成以下输出:
[,1] [,2] [,3] [,4] [1,] 9 7.5 3.333333 3.00 [2,] 9 5.5 3.333333 2.50 [3,] 9 5.5 3.666667 1.00 [4,] 10 6.5 3.666667 2.50 [5,] 9 6.0 2.333333 1.75 [6,] 8 4.5 3.000000 4.00 [7,] 7 4.5 4.000000 2.00 [8,] 12 3.5 4.333333 2.75 [9,] 16 4.0 3.333333 1.50 [10,] 12 5.0 2.333333 2.25 [11,] 14 4.5 4.000000 2.50 [12,] 10 4.0 1.666667 2.75 [13,] 8 6.5 2.666667 2.50 [14,] 8 2.5 2.333333 2.00 [15,] 10 7.0 2.666667 3.25 [16,] 7 5.0 3.000000 1.75 [17,] 11 4.5 3.333333 3.00 [18,] 15 5.5 5.666667 2.00 [19,] 6 8.0 4.666667 3.50 [20,] 12 3.0 4.333333 2.00
示例 2
考虑以下矩阵:
M2<-matrix(round(rnorm(40),2),ncol=2) M2
创建了以下数据框
[,1] [,2] [1,] 0.91 -0.03 [2,] -0.49 -0.23 [3,] -0.26 0.10 [4,] -0.05 -1.16 [5,] 0.86 -2.16 [6,] 0.58 -0.62 [7,] 0.86 -0.67 [8,] 0.32 -0.54 [9,] 0.90 -0.05 [10,] 0.72 -0.88 [11,] -0.46 -1.61 [12,] 0.02 -0.39 [13,] 1.09 -0.09 [14,] -0.67 0.64 [15,] -1.85 -1.31 [16,] -3.32 -1.12 [17,] 1.39 0.08 [18,] -1.25 -0.55 [19,] 0.50 0.93 [20,] 1.02 -1.29
为了将 M2 的列除以上面创建的数据框中 V2 中相应的元素,请将以下代码添加到上面代码段中:
M2<-matrix(round(rnorm(40),2),ncol=2) V2<-c(0.5,0.10) sweep(M2,2,V2,FUN="/")
输出
如果您将以上所有代码段作为单个程序执行,则会生成以下输出:
[,1] [,2] [1,] 1.82 -0.3 [2,] -0.98 -2.3 [3,] -0.52 1.0 [4,] -0.10 -11.6 [5,] 1.72 -21.6 [6,] 1.16 -6.2 [7,] 1.72 -6.7 [8,] 0.64 -5.4 [9,] 1.80 -0.5 [10,] 1.44 -8.8 [11,] -0.92 -16.1 [12,] 0.04 -3.9 [13,] 2.18 -0.9 [14,] -1.34 6.4 [15,] -3.70 -13.1 [16,] -6.64 -11.2 [17,] 2.78 0.8 [18,] -2.50 -5.5 [19,] 1.00 9.3 [20,] 2.04 -12.9
广告