R从一个矩阵行中减去另一个矩阵行中的元素
以这些矩阵为例R从一个矩阵行中减去另一个矩阵行中的元素,r,R,以这些矩阵为例 mat1<- matrix(c(1:30),ncol=3) [,1] [,2] [,3] [1,] 1 11 21 [2,] 2 12 22 [3,] 3 13 23 [4,] 4 14 24 [5,] 5 15 25 [6,] 6 16 26 [7,] 7 17 27 [8,] 8 18 28 [9,] 9 19 29 [10,]
mat1<- matrix(c(1:30),ncol=3)
[,1] [,2] [,3]
[1,] 1 11 21
[2,] 2 12 22
[3,] 3 13 23
[4,] 4 14 24
[5,] 5 15 25
[6,] 6 16 26
[7,] 7 17 27
[8,] 8 18 28
[9,] 9 19 29
[10,] 10 20 30
mat2 <- matrix(c(5,rep(1,9),5.4,rep(2,9),5.5,rep(3,9)),ncol=3)
[,1] [,2] [,3]
[1,] 5 5.4 5.5
[2,] 1 2.0 3.0
[3,] 1 2.0 3.0
[4,] 1 2.0 3.0
[5,] 1 2.0 3.0
[6,] 1 2.0 3.0
[7,] 1 2.0 3.0
[8,] 1 2.0 3.0
[9,] 1 2.0 3.0
你并没有真正得到那个结果。
我不完全明白这里发生了什么。。。似乎第一行mat2
的元素在减法过程中是交替的
它与
matrix(c(mat1[,1]-mat2[1,1],mat1[,2]-mat2[1,2],mat1[,3]-mat2[1,3]),ncol=3)
但就我的数据而言,它变得非常混乱
有什么想法吗 如果你想使用向量循环,你需要知道矩阵是按列填充的,循环是按那个方向进行的。因此,您需要转置矩阵:
t(t(mat1)-mat2[1,])
# [,1] [,2] [,3]
# [1,] -4 5.6 15.5
# [2,] -3 6.6 16.5
# [3,] -2 7.6 17.5
# [4,] -1 8.6 18.5
# [5,] 0 9.6 19.5
# [6,] 1 10.6 20.5
# [7,] 2 11.6 21.5
# [8,] 3 12.6 22.5
# [9,] 4 13.6 23.5
#[10,] 5 14.6 24.5
或者你可以:
mat1-mat2[1,col(mat2)]
# [,1] [,2] [,3]
#[1,] -4 5.6 15.5
#[2,] -3 6.6 16.5
#[3,] -2 7.6 17.5
#[4,] -1 8.6 18.5
#[5,] 0 9.6 19.5
#[6,] 1 10.6 20.5
#[7,] 2 11.6 21.5
#[8,] 3 12.6 22.5
#[9,] 4 13.6 23.5
#[10,] 5 14.6 24.5
啊,我怕跟这个有关系。谢谢!
mat1-mat2[1,col(mat2)]
# [,1] [,2] [,3]
#[1,] -4 5.6 15.5
#[2,] -3 6.6 16.5
#[3,] -2 7.6 17.5
#[4,] -1 8.6 18.5
#[5,] 0 9.6 19.5
#[6,] 1 10.6 20.5
#[7,] 2 11.6 21.5
#[8,] 3 12.6 22.5
#[9,] 4 13.6 23.5
#[10,] 5 14.6 24.5