lor*_*age 0 for-loop r apply matrix-multiplication
我会非常简短!这是一个可重复的例子:
Z1 <- matrix(rep(c(1, 0, 0, 0, 0,
1, 1, 0, 0, 0,
1, 0, 1, 0, 0,
1, 0, 0, 1, 0,
1, 0, 0, 0, 1),
times = 3),
nrow = 15,
ncol = 5,
byrow = TRUE)
z <- matrix(c(0.1, 0.2, 0.3, 0.4, 0.5,
0.6, 0.7, 0.8, 0.9, 1,
1, 2, 3, 4, 5),
nrow = 3,
ncol = 5,
byrow = TRUE)
Run Code Online (Sandbox Code Playgroud)
我需要一个可扩展的非for循环解决方案(例如,涉及来自apply-family的东西),它给出了我现在将手动执行的这些计算的等效结果:
Zz1 <- Z1[1:5,] %*% z[1,]
Zz2 <- Z1[6:10,] %*% z[2,]
Zz3 <- Z1[11:15,] %*% z[3,]
Zz <- rbind(Zz1, Zz2, Zz3)
Run Code Online (Sandbox Code Playgroud)
rowSums(Z1 * z[rep(1:3,each=5),])
#[1] 0.1 0.3 0.4 0.5 0.6 0.6 1.3 1.4 1.5 1.6 1.0 3.0 4.0 5.0 6.0
Run Code Online (Sandbox Code Playgroud)