
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 Uma saída seria utilizar "if else" de forma encadeada, mas isto não seria muito elegante. Alguém saberia informar outra opção? Obrigado! Antonio Olinto

?switch 2011/8/31 Antonio Silva <aolinto.lst@gmail.com>:
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
Uma saída seria utilizar "if else" de forma encadeada, mas isto não seria muito elegante. Alguém saberia informar outra opção?
Obrigado!
Antonio Olinto
_______________________________________________ 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.

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/

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<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<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
participantes (3)
-
Antonio Silva
-
Cesar Rabak
-
Gustavo Carvalho