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   NA

Em 12 de maio de 2016 10:27, Rodrigo Coster <rcoster@gmail.com> escreveu:
Nos 2 comandos, tenta substituir:

for(k in j+1:10){

por

for(k in (j+1):10){

Acredito que isso seja suficiente para funcionar

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,

Michelle

Primeira 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] 80

Segunda 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.