2015-05-01 8 views
0

Я пытаюсь имитировать цепочку марков, используя код, который не был создан для него. Мой цикл for не верен, и я продолжаю получать сообщения об ошибках, но я отслеживал скобки и синтаксис, но я не могу полностью проверить этот вопрос. Матрица для цепи марков - марков. Я пытаюсь построить каждую точку, добавляя к вектору a, но я не думаю, что мои петли делают именно то, что я хочу.Ошибка Loop в r

Я использую генератор случайных чисел, чтобы проверить, какое состояние нужно перемещать в и из. Я понимаю, что есть более простые способы написать этот код, но я хотел бы попытаться использовать этот базовый фундамент, чтобы правильно получить код. Если бы вы могли помочь мне разобраться в коде и выяснить, как правильно вложить петлю, я был бы благодарен.

х моя точка Цепные вероятности марковские равномерно распределены

x1 <- runif(100, 1.0, 100) 
markov <- matrix(c(.5,.3,.2,.4,.5,.1,.2,.4,.4),nrow=3) 
m1 <- markov[1:3] 
m2 <- markov[4:6] 
m3 <- markov[7:9] 
y <- 2 
x <- 1 
a <- c(1) 

while (y <= 100) 
{ 
if(x==1) { 
if(x1[y] < m1[1] * 100) { 
x <- 1 
} else if (x1[y] <= m1[2]*100 + m1[1] * 100 && x1[y] > m1[1] * 100) { 
x <- 2 
} else { 
x <- 3 
} 
a <- union(x,c(y)) 
} else if (x==2) { 
if(x1[y] < m2[1] * 100) { 
x <- 1 
} else if (x1[y] <= m2[2]*100 + m2[1] * 100 && x1[y] > m2[1] * 100) { 
x <- 2 
} else { 
x <- 3 
} 
a <- union(x,c(y)) 
} else { 
if(x1[y] < m3[1] * 100) { 
x <- 1 
} else if (x1[y] <= m3[2]*100 + m3[1] * 100 && x1[y] > m3[1] * 100) { 
x <- 2 
} else { 
x <- 3 
} 
a <- union(x,c(y)) 
y <- y + 1 
} 
} 
plot(c(1:100),a) 
+2

это действительно трудно читать. вам было бы легче (и тем более другим) отлаживать и отслеживать скобки, если бы вы использовали какой-то правильный стиль кодирования. – rawr

+0

Какая ошибка вы получаете? –

+0

Если мой ответ помог вам, пожалуйста, примите его. –

ответ

1

Ваш y <- y+1 в одной слишком много фигурных скобок. Его больше не называют.

Я думаю, что это то, что вы хотите:

x1 <- runif(100, 1.0, 100) 
markov <- matrix(c(.5,.3,.2,.4,.5,.1,.2,.4,.4),nrow=3) 
m1 <- markov[1:3] 
m2 <- markov[4:6] 
m3 <- markov[7:9] 
y <- 2 
x <- 1 
a <- c(1) 
aa <- c() 

while (y <= 100) 
{ 
    if(x==1) { 
    if(x1[y] < m1[1] * 100) { 
     x <- 1 
    } else if (x1[y] <= m1[2]*100 + m1[1] * 100 && x1[y] > m1[1] * 100) { 
     x <- 2 
    } else { 
     x <- 3 
    } 
    a <- union(x,c(y)) 
    } else if (x==2) { 
    if(x1[y] < m2[1] * 100) { 
     x <- 1 
    } else if (x1[y] <= m2[2]*100 + m2[1] * 100 && x1[y] > m2[1] * 100) { 
     x <- 2 
    } else { 
     x <- 3 
    } 
    a <- union(x,c(y)) 
    } else { 
    if(x1[y] < m3[1] * 100) { 
     x <- 1 
    } else if (x1[y] <= m3[2]*100 + m3[1] * 100 && x1[y] > m3[1] * 100) { 
     x <- 2 
    } else { 
     x <- 3 
    } 
    a <- union(x,c(y)) 
    } 
    aa <- c(aa,x) 

    y <- y + 1 
} 
plot(aa) 

 Смежные вопросы

  • Нет связанных вопросов^_^