Votre première matrice a cinq lignes et deux colonnes; votre deuxième matrice a cinq rangées et une colonne. S'ils ont le même nombre de lignes et le second a toujours une colonne que vous pouvez faire
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
Si mat1
avait en fait autant d'éléments dans ses rangs comme mat2
avaient dans sa seule colonne (comme suggèrent vos mots), vous ajuster légèrement cette
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
ou dans la version de sarah
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
Si vous voulez [multiplication matricielle] (http://en.wikipedia.org/wiki/Matrix_multiplication), comme e Le titre suggère, par exemple, vouloir multiplier les lignes de la première matrice par des colonnes de la seconde, c'est 'mat1% *% mat2'. Mais cela nécessite que la première matrice ait autant de colonnes que la seconde a des lignes - ce n'est pas le cas dans votre exemple. –