R 矩阵与向量的元素乘积

R 矩阵与向量的元素乘积,r,matrix,R,Matrix,我需要一个元素操作,而不是通常的矩阵乘法。以下工作很好: # this works Bmat <- structure(c(3L, 3L, 10L, 3L, 4L, 10L, 5L, 8L, 8L, 8L, 3L, 8L, 8L, 2L, 6L, 10L, 2L, 8L, 3L, 9L), .Dim = c(10L, 2L)) yvec <- c(2, 2, 2, 2, 2, 2, 2, 2, 2, 2) Bmat * yvec # [,1] [,2] # [1,]

我需要一个元素操作,而不是通常的矩阵乘法。以下工作很好:

# this works
Bmat <- structure(c(3L, 3L, 10L, 3L, 4L, 10L, 5L, 8L, 8L, 8L, 3L, 8L, 8L, 2L, 6L, 10L, 2L, 8L, 3L, 9L), .Dim = c(10L, 2L))
yvec <- c(2, 2, 2, 2, 2, 2, 2, 2, 2, 2)
Bmat * yvec
#       [,1] [,2]
#  [1,]    6    6
#  [2,]    6   16
#  [3,]   20   16
#  [4,]    6    4
#  [5,]    8   12
#  [6,]   20   20
#  [7,]   10    4
#  [8,]   16   16
#  [9,]   16    6
# [10,]   16   18
#这很有效
Bmat
只有当两个矩阵具有相同的维数时,才可能实现两个矩阵之间的元素相乘。因此,解决方案是将
xvec
转换为向量。试一试

Amat * c(xvec)
#OR
Amat * as.vector(xvec)
Amat*as.numeric(xvec)
@(d.b,David Heckmann):两种解决方案都有效,谢谢!
class(xvec)
[1] "matrix"

dim(xvec)
[1] 10  1

class(Amat)
[1] "matrix"    

dim(Amat)
[1] 10  2
Amat * c(xvec)
#OR
Amat * as.vector(xvec)