用向量的元素划分矩阵的列

时间:2018-01-08 13:25:27

标签: r

我正在弄清楚如何将矩阵的第n列除以行向量的第n个元素。

例如,让矩阵a和向量b为:

<html>

    <body>

        <input type="text" id="cursorX" size="3"> X-position of the mouse cursor
        <br /><br />
        <input type="text" id="cursorY" size="3"> Y-position of the mouse cursor

    </body>
</html>

a <- matrix(1:9, byrow = TRUE,  nrow = 3)
b <- c(3:5)

在这种情况下,我正在寻找将矩阵的第一列除以3,将第二列除以4,将第四列除以5的代码。

我尝试过使用apply功能但没有成功

[[1]]
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9

[[2]]
[1] 3 4 5

是否有任何代码可以通过apply执行此操作,最好不使用循环?

3 个答案:

答案 0 :(得分:3)

另一种选择是mapply,即

mapply(`/`, data.frame(a), b)

给出了

           X1   X2  X3
[1,] 0.3333333 0.50 0.6
[2,] 1.3333333 1.25 1.2
[3,] 2.3333333 2.00 1.8

答案 1 :(得分:2)

您可以使用sweep

#same as apply the second argument needs to be 1 for row or 2 for column
sweep(a, 2, b, FUN = '/')
#          [,1] [,2] [,3]
#[1,] 0.3333333 0.50  0.6
#[2,] 1.3333333 1.25  1.2
#[3,] 2.3333333 2.00  1.8

答案 2 :(得分:0)

您可以对矩阵进行转置,除以并转换结果。

t(t(a)/b)
#          [,1] [,2] [,3]
#[1,] 0.3333333 0.50  0.6
#[2,] 1.3333333 1.25  1.2
#[3,] 2.3333333 2.00  1.8