for循环中各行之间的迭代方程式仅存储最后一个值

时间:2018-09-14 03:04:26

标签: r for-loop

我有一个数据集gl,我想生成第二个数据集gl2,其中包含一个从gl提取的方程式。但是,它仅存储我循环中的最后一个值。

gl:

CaseID  Trait   RMF     RMFE    ZM      ZME     ZF      ZFE     avG     errG
171     Lrs     -0.85   0.6     0.92    0.022   0.77    0.018   0.043  0.051
172     Hll     0.4     0.14    171.8   0.680   172.5   0.5333  22.8    3.6
173     W       0.42    0.09    19.7    0.382   18.7    0.2125  0.79    0.4
174     Fec     0.27    0.13    1.63    0.036   0.92    0.034   0.039  0.009
201     ConPG   -0.95   0.42    0.00018 8.65E-5 0.0008  6.61E-5 7.93    7.06
206     Lrs     -0.48   0.44    0.98    0.129   2.27    0.118   61.07  58.94
131     PWm1    0.4     0.48    191     1.048   131     0.733   157     75
132     PWm2    0.53    0.06    198     0.650   135     0.396   263     92
133     PWm3    0.59    0.22    157     0.670   109     0.391   195     195

代码:

draws <- 10^6
gl2 <- data.frame(matrix(nrow=9, ncol=1))
gl2$CaseID <- gl$CaseID
gl2$Trait <- gl$Trait

for (i in nrow(gl)){
  G <- rnorm(draws, gl$avG[i], gl$errG[i])
  zm <- rnorm(draws, gl$ZM[i], gl$ZME[i])
  zf <- rnorm(draws, gl$ZF[i], gl$ZFE[i])
  rmf <- rnorm(draws, gl$RMF[i], gl$RMFE[i])

  load <- (zm + zf)/(8*G + rmf)
  mload <- mean(load)

  gl2[i,1] <- c(mload)
}

我希望该输出成为gl2的新列,并在每行中都包含方程式(mload)的结果,它的输出改为是第1列最后一行的单个值。 我知道这不是有效的代码,但这是我的理解方式。我花了好几天时间来使用它,却找不到任何解决方案,也不知道为什么它不起作用。 谢谢。

0 个答案:

没有答案