[英]Subtract the values from one matrix by row for each column of another matrix
[英]R Subtract elements from one matrix row from another matrix
因此,以這些為例。
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
我試圖從mat1
每一行中減去mat2
的第一列,但是使用以下代碼:
mat1[,1:3]-mat2[1,1:3]
[,1] [,2] [,3]
[1,] -4.0 5.6 15.5
[2,] -3.4 6.5 17.0
[3,] -2.5 8.0 17.6
[4,] -1.0 8.6 18.5
[5,] -0.4 9.5 20.0
[6,] 0.5 11.0 20.6
[7,] 2.0 11.6 21.5
[8,] 2.6 12.5 23.0
[9,] 3.5 14.0 23.6
[10,] 5.0 14.6 24.5
你真的沒有得到那樣的結果。 我不完全了解這里發生了什么...好像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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.