我正在尝试使用足够快的解决方案(并避免循环)来解决以下问题: 我有一个矩阵nxn(方形但不一定)和矢量或大小nx1。我想将矩阵的每一行除以向量中的倒数元素,如下所示:
第N行应除以第n个向量元素。
stats = matrix(1.2,10000,10000)
是相同的,其大小为10,000,并初始化为某些值。
答案 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
(旁注:按栏分割,你必须转置矩阵)