假设我有一个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
答案 0 :(得分:2)
只需使用apply
:
w1 <- matrix(c(0,1, 2, 3), ncol = 2)
v1 <- matrix(c(0, 6), ncol = 1)
apply(w1, 2, `*`, v1)
第二个参数告诉apply
在*
的每一列上使用函数w1
。 v1
是*
的参数。
答案 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