我有以下代码:
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.6
介于值3.5
和r
之间的条件,如果1-4.
的值超出{{1}}范围我想重复{{1}}直到它落在范围内。
答案 0 :(得分: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)不属于该范围。