[R-br] equivalente ao "select case" do VB em R
Antonio Silva
aolinto.lst em gmail.com
Quarta Agosto 31 15:54:14 BRT 2011
Obrigado pelas respostas Cesar e Gustavo.
O código a ser portado é basicamente este mesmo, só que o original tem mais
linhas. Os valores inteiros possíveis de AG vão de 0 até 28 e não até 10 e
os casos possíveis são 8 e não 4, como escrevi no exemplo.
Eu havia chegado ao if e ao switch também, mas não consegui pensar em como
utilizá-lo de forma mais "limpa" neste caso.
switch (statement, list)
O statement seria as.interger(AG) (+1 por que meu primeiro valor é 0)
Mas como eu atribuiria, utilizando este comando, o valor 37 à variável VAR
caso os valores inteiros de AG fossem 0, 5, 8 ou 10?
switch (as.interger(AG)+1, VAR<-37,VAR<-70,VAR<-112,VAR<-90, ....)
Neste caso a lista de VAR<- valor teria 29 posições (0 a 28). Com o case
posso agrupar os valores de cada caso.
Em outra lista tive uma resposta interessante. A função recode do pacote
car.
AG<-2.7
VAR<-recode(as.integer(AG),"c(0,5,8,10)=37;c(1,4)=70;c(3,6,9)=90;c(2,7)=112")
VAR
[1] 112
Bem mais limpo, não?
Mais uma vez obrigado
Antônio
PS. eu não envio o mesmo e-mail para listas diferentes. No entanto hoje ao
enviar a mensagem para a r-help em r-project.org recebi uma mensagem estranha,
que nunca havia recebido. Minha mensagem necessitaria da aprovação do
moderador. Segui o link indicado e cancelei a mensagem, mas mesmo assim ela
foi postada lá.
Em 31 de agosto de 2011 14:49, Cesar Rabak <cesar.rabak em gmail.com> escreveu:
> Em 31/8/2011 14:24, Antonio Silva escreveu:
>
> Olá,
>>
>> Estou passando para R uma rotina em visual basic.
>>
>> No R, qual o comando mais similar ao"select case" do VB?
>>
>> Por exemplo:
>>
>> select case int(AG)
>> case 0, 5, 8, 10
>> VAR = 37
>> case 1, 4
>> VAR = 70
>> case 3, 6, 9
>> VAR = 90
>> case 2, 7
>> VAR = 112
>> end select
>>
>> Antonio,
>
> Imagino que o código acima seja somente um exemplo e não o código a
> efetivamente ser portado, pois nesse caso a alternativa seria usar um vetor
> com a posição escolhida por AG.
>
> Para caso mais geral, veja se o 'switch' da lingugem R lhe serve:
> http://cran.r-project.org/doc/**manuals/R-lang.html#switch<http://cran.r-project.org/doc/manuals/R-lang.html#switch>
>
> --
> Cesar Rabak
> GNU/Linux User 52247.
> Get counted: http://counter.li.org/
>
> ______________________________**_________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/**cgi-bin/mailman/listinfo/r-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<http://www.leg.ufpr.br/r-br-guia>)
> e forneça código mínimo reproduzível.
>
--
Antônio Olinto Ávila da Silva
Biólogo / Oceanógrafo
Instituto de Pesca (Fisheries Institute)
São Paulo, Brasil
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20110831/a7156b14/attachment.html>
Mais detalhes sobre a lista de discussão R-br