通过向量的单个条目对Matrix的每一行执行基本运算(加,减,乘和除)

时间:2016-04-22 19:29:34

标签: r

我正在尝试使用足够快的解决方案(并避免循环)来解决以下问题: 我有一个矩阵nxn(方形但不一定)和矢量或大小nx1。我想将矩阵的每一行除以向量中的倒数元素,如下所示:

  • 第一行应除以第一个向量元素
  • 第二行应除以第二个向量元素
  • 第N行应除以第n个向量元素。

    stats = matrix(1.2,10000,10000)

对于向量,

是相同的,其大小为10,000,并初始化为某些值。

2 个答案:

答案 0 :(得分:2)

这是sweep函数的用途

mm <- matrix(rep(1:5, 7), ncol=7)
d <- 1:5
sweep(mm, 1, d, "/")

在这里,我们告诉扫描,对于mm的每一行(对于MARGIN 1 =行,2 =列),将d

中的相应值分开

答案 1 :(得分:0)

你能用矢量划分矩阵吗?

m <- matrix(1:20, nrow=5)
#[,1] [,2] [,3] [,4]
#[1,]    1    6   11   16
#[2,]    2    7   12   17
#[3,]    3    8   13   18
#[4,]    4    9   14   19
#[5,]    5   10   15   20

v <- 5:1
#[1] 5 4 3 2 1

#Divide matrix row 1 by 5 (v[1])
#Divide matrix row 2 by 4 (v[2])
m/v
#[,1]      [,2]      [,3]  [,4]
#[1,]  0.2  1.200000  2.200000  3.20
#[2,]  0.5  1.750000  3.000000  4.25
#[3,]  1.0  2.666667  4.333333  6.00
#[4,]  2.0  4.500000  7.000000  9.50
#[5,]  5.0 10.000000 15.000000 20.00

(旁注:按栏分割,你必须转置矩阵)