如何将矩阵乘以另一个数据集中的列?

时间:2019-06-06 07:22:39

标签: r

我是一个初学者,现在我遇到了一个问题,我认为它应该有一个非常简单的解决方案。谢谢您的帮助。

我有一个313 * 442矩阵

每列应在另一个数据集的单独列中乘以固定数字。

第一列应乘以0.8,第二列应乘以-2.3和...,最后应计算行的总和。 最后,我应该有一列应与每一行相对应。

2 个答案:

答案 0 :(得分:0)

一种选择是在第二个数据集中复制该列以使长度相同并与矩阵相乘

m1 * df1$v1[col(m1)]
#    [,1] [,2]
#[1,]    2    9
#[2,]    4   12

或者另一个选择是sweep

sweep(m1, 2,  df1$v1,  `*`)
#      [,1] [,2]
#[1,]    2    9
#[2,]    4   12

数据

m1 <- matrix(c(1, 2, 3, 4), ncol = 2)
df1 <- data.frame(v1 = c(2, 3))

答案 1 :(得分:0)

假设m1是您的矩阵,v1是要与每个列相乘的值的向量。然后,

m1 <- matrix(c(1, 2, 3, 4), ncol = 2)
m1
     [,1] [,2]
[1,]    1    3
[2,]    2    4

v1 <- c(2, 3)

t(t(m1) * v1)
#     [,1] [,2]
#[1,]    2    9
#[2,]    4   12