首页 文章

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

提问于
浏览
0

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

  • 第一行应除以第一个向量元素,

  • 第二行应除以第二个向量元素,

  • .

  • .

  • .

  • 第N行应除以第n个向量元素 .

stats = matrix(1.2,10000,10000)

对于矢量来说是相同的,它的大小为10,000,并初始化为某些值 .

2 回答

  • 2

    这就是 sweep 功能的用途

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

    在这里,我们告诉扫描,对于 mm 的每一行(对于MARGIN 1 =行,2 =列),从 d 中划分出相应的值 .

  • 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
    

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

相关问题