【发布时间】:2014-07-09 14:28:14
【问题描述】:
我有以下代码:
beta <- c(1, 2, 3)
X1 <- matrix(c(1, 1, 1, 1,
0, 1, 0, 1,
0, 0, 1, 1),
nrow = 4,
ncol = 3)
Z1 <- matrix(c(1, 1, 1, 1,
0, 1, 0, 1),
nrow = 4,
ncol = 2)
Z2 <- matrix(c(1, 1, 1, 1,
0, 1, 0, 1),
nrow = 4,
ncol = 2)
library(MASS)
S1 <- mvrnorm(70, mu = c(0,0), Sigma = matrix(c(10, 3, 3, 2), ncol = 2))
S2 <- mvrnorm(40, mu = c(0,0), Sigma = matrix(c(10, 4, 4, 2), ncol = 2))
z <- list()
y <- list()
for(j in 1:dim(S1)[1]){
for(i in 1:dim(S2)[1]){
z[[i]] <- X1 %*% beta+Z1 %*% S1[j,]+Z2 %*% S2[i,]+matrix(rnorm(4, mean = 0 , sd = 0.27), nrow = 4)
Z <- unname(do.call(rbind, z))
}
y[[j]] <- Z
Y <- unname(do.call(rbind, y))
}
X1 是 4x3、Z1 和 Z2 是 4x2 矩阵。因此,每次调用 X1 %*% beta+X2 %*% S1[j,]+X2 %*% S2[i,]+matrix(rnorm(4, mean = 0 , sd = sigma), nrow = 4) 时,它都会输出一个 4x1 矩阵。到目前为止,我将所有这些值存储在两个列表中的内部和外部循环中,然后调用rbind() 将它们转换为矩阵。有没有办法直接将它们存储在矩阵中?
【问题讨论】:
-
这听起来很有趣,但如果不知道 ran_sub、ran_ite 和 beta 的尺寸,我很难想象有替代方案。您能否提供一个完整的示例来产生您想要的输出?
-
当然,请稍等。
-
现在包含可重现的示例。
-
仍然缺少
ran_sub和ran_ite。我可以将它们设置为一些小整数吗? -
抱歉,现已修复。我刚刚将
ran_sub和ran_ite分别替换为S1和S2。