0

我有以下数据框和变量:

u0 <- c(1,1,1,1,1)
df <- data.frame (u0)
a = .793
b = 2.426
r = 0.243
q = 1
w = 2
j = 1
z = .314

使用下面的循环我正在做一些计算并将结果放在我的数据框的第一行。

while (j<5){
  df[q,w] <- df[q, w-1] * (r+j-1)*(b+j-1)*(z) / ((a+b+j-2)*j)
  j = j + 1
  w = w + 1
}

现在我想创建另一个循环来对我的数据框的所有行进行相同的计算(即我需要'q'变量来改变)。如果有人帮助我,我将不胜感激。

4

2 回答 2

2

你可以通过将你的while循环放在一个for越过的循环中来做到这一点q,但一种更具 R 风格的方法是简单地定义q <- 1:5,并让你的其余代码保持原样。然后df将完全填满。我在这个例子中你希望所有行都相同吗?

于 2012-08-07T05:23:12.193 回答
0

你不能把它放在一个for循环中吗?

df <- data.frame (d1=u0, d2=u0+1, d3=u0+2, d4=u0+4, d5=u0+5)
for (q in 2:5) {
while (j<5){
  df[q,w] <- df[q, w-1] * (r+j-1)*(b+j-1)*(z) / ((a+b+j-2)*j)
  j = j + 1
  w = w + 1
           }    }

您可能需要检查算法。它似乎没有做任何非常有趣的事情。

于 2012-08-07T05:20:14.060 回答