在R中的while循环 - 条件具有长度> 1,只使用第一个元素

时间:2017-11-08 23:26:47

标签: r

我需要使用R中的Marsaglia-Bray算法生成正常的随机变量。算法如下所示:

while(X>1)
   generate U1,U2~Unif[0,1]
   U1<-2*U1-1, U2<-2*U2-1
   X<-U1^2+U2^2
end
Y<-sqrt(-2*log(X)/X)
Z1<-U1*Y
Z2<-U2*Y
return Z1,Z2

部分代码存在错误

x <- numeric(100)
while(x>1){
      u1 <- runif(1)
      u2 <- runif(1)
      u1 <- 2*u1-1
      u2 <- 2*u2-1
      x <- u1^2+u2^2
}
Warning message:
In while (x > 1) { :
  the condition has length > 1 and only the first element will be used

不知道如何解决它,有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

您应该考虑在循环中使用while

for(i in 1:100) { while(x>1){...} }