Michelle,Eu tinha me preocupado só com o erro enviado, não com o algoritmo. Olhando com mais atenção, vi que tu está usando o for() para algo que não pode ser feito com for() (ok, até pode, mas não é o ideal). O for() sempre vai passar por todos elementos do vetor informado, mas não é isso que tu quer que faça (tanto que, ao final do dele, tu faz com que j seja igual a j + k). Para fazer o que tu quer, é necessário usar while() ou repeat(). Se eu entendi bem o teu objetivo, segue uma sugestão de solução com while:
v<-c(1,2,5,4,8,9,10,4,2,7,6,8,2)
n <- length(v)
matrizz<-matrix(NA,13,2)
j <- 1
while (j <= n) {
k <- 1
if(v[j]>4){
vc<-10*v[j]
matrizz[j,1]<-vc
while (v[j + k] > 3) { k <- k + 1 }
vc2<-7*v[j + k]
matrizz[j + k,2]<-vc2
}
else print("Não houve abertura de processo")
j=j+k
}2016-05-12 10:48 GMT-03:00 Michelle Bau Graczyk <mbgraczyk@gmail.com>:Oi Rodrigo, primeiro obrigada pela resposta.Acho que ainda não deu certo, porque eu tentei gravar os dados e olha como fica:> v<-c(1,2,5,4,8,9,10,4,2,7,6,8,2)> ts<-ts(v)> matrizz<-matrix(NA,13,2)> for(j in 1:10){++ if(ts[j]>4){++ vc<-10*ts[j]+ matrizz[k,1]<-vc+ for(k in (j+1):10){++ if(ts[k]<4){++ vc2<-7*ts[k]+ matrizz[k,2]<-vc2+ }+ }++ }+ else print("Não houve abertura de processo")+ j=j+k++ }[1] "Não houve abertura de processo"[1] "Não houve abertura de processo"[1] "Não houve abertura de processo"[1] "Não houve abertura de processo"[1] "Não houve abertura de processo"> vc2[1] 14> vc[1] 70> matrizz[,1] [,2][1,] NA NA[2,] NA NA[3,] NA NA[4,] NA NA[5,] NA NA[6,] NA NA[7,] NA NA[8,] NA NA[9,] NA 14[10,] 70 NA[11,] NA NA[12,] NA NA[13,] NA NAEm 12 de maio de 2016 10:27, Rodrigo Coster <rcoster@gmail.com> escreveu:Acredito que isso seja suficiente para funcionarNos 2 comandos, tenta substituir:por
for(k in j+1:10){
for(k in (j+1):10){2016-05-12 10:20 GMT-03:00 Michelle Bau Graczyk <mbgraczyk@gmail.com>:_______________________________________________Caros, bom dia,Estou com um problema de lógica de programação. O que eu esperava era o seguinte: se ts[j]>4, eu abro uma operação e ela só para quando ts[j]<4. Enquanto uma operação está aberta, não se pode abrir mais nenhuma. Para isso eu tentei fazer de duas formas, usando e não usando o while, mas eu não consegui.Alguém teria alguma idéia sobre o que eu ando pensando errado?Muito obrigada,MichellePrimeira opção:> v<-c(1,2,5,4,8,9,10,4,2,7,6,8,2)> ts<-ts(v)>> for(j in 1:10){+ if(ts[j]>4){+ #vende+ #compra+ #compra+ vc<-10*ts[j]+ while(ts[j+1]>4) j=j+1+ for(k in j+1:10){+ if(ts[k]<4){+ vc2<-7*ts[k]++ }+ }+ }+ else print("Não houve abertura de processo")+ j=j+k+ vc2+ vc+ }[1] "Não houve abertura de processo"[1] "Não houve abertura de processo"[1] "Não houve abertura de processo"Error in if (ts[k] < 4) { : valor ausente onde TRUE/FALSE necessário> vc2[1] 14>> vc[1] 80Segunda opção:> v<-c(1,2,5,4,8,9,10,4,2,7,6,8,2)> ts<-ts(v)>> for(j in 1:10){+ if(ts[j]>4){+ #vende+ #compra+ #compra+ vc<-10*ts[j]+ for(k in j+1:10){+ if(ts[k]<4){+ vc2<-7*ts[k]++ }+ }+ }+ else print("Não houve abertura de processo")+ j=j+k+ vc2+ vc+ }[1] "Não houve abertura de processo"[1] "Não houve abertura de processo"[1] "Não houve abertura de processo"Error in if (ts[k] < 4) { : valor ausente onde TRUE/FALSE necessário> vc2[1] 14>> vc[1] 80
R-br mailing list
R-br@listas.c3sl.ufpr.br
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
_______________________________________________
R-br mailing list
R-br@listas.c3sl.ufpr.br
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
_______________________________________________
R-br mailing list
R-br@listas.c3sl.ufpr.br
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
_______________________________________________
R-br mailing list
R-br@listas.c3sl.ufpr.br
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.