[R-br] Uso de laços e while().

Augusto Ribas ribas.aca em gmail.com
Quinta Maio 12 11:09:31 BRT 2016


Eu não consegui entender exatamente seu problema. Você poderia fornecer um
exemplo de como são os dados de entrada, e o que tem que estar saindo?
Mas pela sua descrição la em cima, você não quer fazer algo mais ou menos
como no exemplo abaixo?

v<-c(1,2,5,4,8,9,10,4,2,7,6,8,2)
ts_objeto<-ts(v)


j=1
operacao=FALSE
while(j<=length(v)){


    if(v[j]>4) {
        if(operacao==FALSE){
            operacao<-TRUE
            print(paste("Iniciando operacao com",v[j]))
        }else{
            print(paste(v[j],"em operação"))
        }
    } else {
        if(operacao==TRUE){
            operacao=FALSE
        }
        print(paste(v[j],"Fora de operação"))
    }


    j<-j+1
}

Mas acho que você precisa ser mais especifica na descrição do seu problema
para ficar mais fácil encontrar ajuda.


Em 12 de maio de 2016 09:48, Michelle Bau Graczyk <mbgraczyk em gmail.com>
escreveu:

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



-- 
Grato
Augusto C. A. Ribas

Site Pessoal: http://recologia.com.br/ <http://augustoribas.heliohost.org>
Github: https://github.com/Squiercg
Lattes: http://lattes.cnpq.br/7355685961127056
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20160512/a80bf621/attachment.html>


Mais detalhes sobre a lista de discussão R-br