【发布时间】:2014-07-28 12:51:02
【问题描述】:
我会非常简短!这是一个可重现的小例子:
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)
我需要一个可扩展的非 for-loop 解决方案(例如,涉及来自 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)
【问题讨论】:
-
请展示您尝试过的内容
-
你好。我试过
for-loops。我对小规模问题的半解决方案是。 (我在这里写一行!):A <- list(); B <- list(); C <- list(); for(i in 1:3){if(i == 1){A[[i]] <- Z1[1:5,] %*% z[i,]}; if(i == 2){B[[i]] <- Z1[6:10,] %*% z[i,]}; if(i == 3){C[[i]] <- Z1[11:15,] %*% z[i,]};D <- do.call(rbind, c(A, B, C))}
标签: r for-loop apply matrix-multiplication