【发布时间】:2014-11-20 05:54:29
【问题描述】:
我想使用双循环来设置一个 6 列和 2^6=64 行的矩阵。对于每一行,我试图存储从 S1 到 S6 的每个值。然后找到它们的平均值。之后,对所有 64 行运行 out 循环。我可以用一种非常复杂的方式来做到这一点,如下所示。
w <- expand.grid(rep(list(0:1),6))
for(i in 1:dim(w)[1])
{
S0<-20
u <- 1.1
d <- .92
S1 <- S0*u^w[i,1]*d^(1-w[i,1])
S2 <- S0*u^w[i,2]*d^(1-w[i,2])
S3 <- S0*u^w[i,3]*d^(1-w[i,3])
S4 <- S0*u^w[i,4]*d^(1-w[i,4])
S5 <- S0*u^w[i,5]*d^(1-w[i,5])
S6 <- S0*u^w[i,6]*d^(1-w[i,6])
a <- c(S1,S2,S3,S4,S5,S6)
mean <- (S0+S1+S2+S3+S4+S5+S6)/7
}
任何人都可以帮助我处理内部循环。我在想的是使用内部 for 循环,例如:
for(j in 1:dim(w)[2])
{
S <- S0*u^w[i,j]*d^(1-w[i,j])
sum <- S0+S
mean <- sum/7
}
这绝对是错误的,因为 S 只被下一个值替换并且只为终端存储。即使我的 S1 到 S6 用完了,我也没有存储它。如果这些值可以存储在矩阵中,那就太好了。谢谢!
【问题讨论】:
-
是
a<-S0*u^w*d^(1-w)你在找什么?在 R 中,操作是矢量化的。如果你想要每一行的意思,你可以试试rowMeans(a)。