Ich unterrichte mich selbst, indem ich einige Aufgaben in meiner Monte-Carlo-Klasse re-mache. Ich baute einen RANDU-Generator in R, und ich bin für alle Triplets in der Sequenz zuständig (u_i, u_ {i + 1}, u_ {i + 2}), wobei 0,5 < = u_ {i + 1} < = 0,51 , plot u_i gegen u_ {i + 2}.Streudiagramm in R
Ich habe folgendes in MATLAB während der Klasse und ich bekomme diese:
Hier ist der Code, den ich in Latex schrieb, beachten Sie nur, dass die in der Variablen gespeicherten Daten u einfach einheitliche Zufallszahlen zwischen 0 und 1.
Nun zu meiner Frage, bekomme ich diesen Fehler in R
Error in if (0.5 <= u[i + 1] & u[i + 1] <= 0.51) { :
missing value where TRUE/FALSE needed
Ich bin nicht sicher, was das Problem ist hier, hier ist meine volle R-Code:
n = 20002
x <- 1:n
x[1] = 1
for(i in 2:n){
x[i] = (65539*x[i-1]) %% 2^31
}
u <- 1:n
u[1] = 1/(2^31)
for(i in 2:n){
u[i] = x[i]/(2^31)
}
for(i in 1:length(u)){
if(0.5 <= u[i+1] & u[i+1] <= 0.51){
plot(u[i],u[i+2])
}
}
Irgendwelche Vorschläge sehr geschätzt werden.
Das Argument '0,5 <= u [i + 1] & u [i + 1] <= 0,51 'sieht seltsam aus. Wie kann derselbe Wert 'u [i + 1] 'kleiner oder gleich 0,51 und mehr als oder gleich 0,51 gleichzeitig sein? –
Ich denke, das Problem hier ist wegen 'NA' Werte. Sie versuchen, 'u [i + 1]' zu indizieren, was dazu führt, dass NA für einen Wert zurückgegeben wird (wenn 'i = Länge (u)'). Der gleiche Fall tritt auf, wenn Sie versuchen, 'u [i + 2]' zu zeichnen. Versuchen Sie, Ihre Indizierung zu ändern und zu überprüfen, ob sie funktioniert. – fzk