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@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@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

--
Cesar Rabak
GNU/Linux User 52247.
Get counted: http://counter.li.org/

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



--
Antônio Olinto Ávila da Silva
Biólogo / Oceanógrafo
Instituto de Pesca (Fisheries Institute)
São Paulo, Brasil