subtract a constant vector from each row in a matrix in r

前端 未结 5 1762
终归单人心
终归单人心 2020-12-14 00:36

I have a matrix with 5 columns and 4 rows. I also have a vector with 3 columns. I want to subtract the values in the vector from columns 3,4 and 5 respectively at each row o

5条回答
  •  眼角桃花
    2020-12-14 01:22

    This is exactly what sweep was made for:

    b <- matrix(rep(1:20), nrow=4, ncol=5)
    x <- c(5,6,7)
    
    b[,3:5] <- sweep(b[,3:5], 2, x)
    b
    
    #     [,1] [,2] [,3] [,4] [,5]
    #[1,]    1    5    4    7   10
    #[2,]    2    6    5    8   11
    #[3,]    3    7    6    9   12
    #[4,]    4    8    7   10   13
    

    ..or even without subsetting or reassignment:

    sweep(b, 2, c(0,0,x))
    

提交回复
热议问题