我正在弄清楚如何将矩阵的第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执行此操作,最好不使用循环?
答案 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