1

我有以下代码:

   1. A=rnorm(100,mean=0, sd=30)
   2. B1=A+rnorm(100,mean=0,sd=10); B2=A+rnorm(100,mean=0,sd=30); B3=A+rnorm(100,mean=0,sd=50)
   3. d=data.frame(A, B1,B2,B3)
   4. c=cor(d)^2
   5. r=c[2,1]/c[4,1]

我想重述几句1-4。直到满足条件1.6 <=r <=3.5

即我想生成A, B1, B2, B3,以便它们满足r值之间的标准1.63.5如果值r落在该范围之外,我想重复1-4.,直到它落在该范围内。

4

1 回答 1

0

while在这种情况下可能很有用。

set.seed(1)
r<- 0
while(!(1.6 <=r & r <=3.5)){
  r <- r
  A=rnorm(100,mean=0, sd=30)
  B1=A+rnorm(100,mean=0,sd=10); B2=A+rnorm(100,mean=0,sd=30); B3=A+rnorm(100,mean=0,sd=50)
  d=data.frame(A, B1,B2,B3)
  c=cor(d)^2
  r=c[2,1]/c[4,1]
  print(r)
}
[1] 4.530864
[1] 2.600124

它只重复两次并找到一个满足条件的值 2.600124 然后停止,因为第一个值 (4.530864) 不属于该范围。

于 2013-09-08T11:11:33.380 回答