Ваша первая матрица имеет пять строк и два столбца; ваша вторая матрица имеет пять строк и один столбец. Если у них одинаковое количество строк, а у второго всегда один столбец, вы можете сделать
mat1 * rep(mat2,ncol(mat1))
[,1] [,2]
[1,] -0.2327958 0.76093047
[2,] -0.3636661 -0.18991299
[3,] -0.8729468 0.58214118
[4,] 0.8017349 -0.59781909
[5,] -0.2230380 -0.08296606
Если бы mat1
на самом деле содержало столько элементов в строках, сколько mat2
имело в одном столбце (как подсказывают ваши слова), вы бы немного подкорректировали
mat1 <- matrix(rnorm(10), nrow=2, ncol=5)
mat2 <- matrix(rnorm(5), nrow=5, ncol=1)
mat1 * rep(mat2,nrow(mat1))
[,1] [,2] [,3] [,4] [,5]
[1,] -0.19818805 -0.05938007 -1.7792597 0.06937307 -0.7193403
[2,] -0.05087793 0.10781853 0.2243285 -0.11416273 2.4063926
или в версии Сары
mat1 <- matrix(rnorm(10), nrow=5, ncol=2)
mat2 <- matrix(rnorm(2), nrow=2, ncol=1)
mat1 * rep(mat2,nrow(mat1))
[,1] [,2]
[1,] 0.1528393 0.68646359
[2,] 0.2420454 0.22987250
[3,] -0.2592124 -0.07626098
[4,] 0.4431273 0.27320838
[5,] -0.1698307 0.47578667