乘以矢量元素行的矩阵行

时间:2018-04-04 19:23:14

标签: r matrix

假设我有一个2x2矩阵,我想在2x1向量中使用相同的行元素对每一行进行多次复用。我怎样才能在R中完成这个?

示例:

w1 <- matrix(c(0,1, 2, 3), ncol = 2)
v1 <- matrix(c(0, 6), ncol = 1)

乘法

[(0 * 0),(2 * 0)] = [0,0]

[(1 * 6),(3 * 6)] = [6,18]

所需的输出

     [,1] [,2]
[1,]    0    0
[2,]    6   18

3 个答案:

答案 0 :(得分:2)

只需使用apply

w1 <- matrix(c(0,1, 2, 3), ncol = 2)
v1 <- matrix(c(0, 6), ncol = 1)

apply(w1, 2, `*`, v1)

第二个参数告诉apply*的每一列上使用函数w1v1*的参数。

答案 1 :(得分:2)

如果将矢量表示为矢量而不是矩阵,则可以起作用:

m <- matrix(c(0,1,2,3), nrow = 2)
v <- matrix(c(0, 6), nrow = 2)

> m*as.vector(v)
     [,1] [,2]
[1,]    0    0
[2,]    6   18

或者,从一开始就将其称为向量:

m <- matrix(c(0,1,2,3), nrow = 2)
v <- c(0,6)

> m*v
     [,1] [,2]
[1,]    0    0
[2,]    6   18

答案 2 :(得分:1)

一个选项是:

w1 <- matrix(c(0,1, 2, 3), ncol = 2)
v1 <- matrix(c(0, 6), ncol = 1)
w1*v1[,1]
#       [,1] [,2]
# [1,]    0    0
# [2,]    6   18