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
This is exactly what sweep was made for:
sweep
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))