[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