
Prezados, eu sei que existem outras maneiras (funcoes, tipo ifelse) de se fazer isso, porem eu gostaria de fazer pelo if else , pq fica mais claro no meu script. bom.. eu venho tentando aplicar a condicao em um vetor, por exemplo x<- 1:10 if(x < 4) {print ("a")} else {"print ("b)} porem isso nao esta funcionando. Há algum outra maneira de aplicar a funcao if else para teste e/ou avaliacao dos dados de um vetor? obrigado, Leonardo.

Leonardo, não sei se entendi o que quer. Tente ou ifelse(x < 4, "a", "b") ou ifelse(x<4,print("a"),print("b")) Em 23 de agosto de 2015 23:27, Leonardo Monteiro < monteiroleonardo6@gmail.com> escreveu:
Prezados, eu sei que existem outras maneiras (funcoes, tipo ifelse) de se fazer isso, porem eu gostaria de fazer pelo if else , pq fica mais claro no meu script.
bom.. eu venho tentando aplicar a condicao em um vetor, por exemplo
x<- 1:10 if(x < 4) {print ("a")} else {"print ("b)}
porem isso nao esta funcionando.
Há algum outra maneira de aplicar a funcao if else para teste e/ou avaliacao dos dados de um vetor?
obrigado,
Leonardo.
_______________________________________________ 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.
-- "Minha felicidade depende da qualidade dos meus pensamentos"

Leonardo, Eu já toquei nesse assunto em resposta a outra questão parecida com essa sua, por isso serei mais breve. A linguagem R é por excelência uma linguagem voltada para o tratamento de dados em grupos que *grosso modo* podemos denominar de "matriciais". Por a maioria das "coisas" que se pode fazer em R são "automagicamente" feitas em vetores ou matrizes de dados. Como um exemplo "bobinho" veja:
1:10 + 0.07 [1] 1,07 2,07 3,07 4,07 5,07 6,07 7,07 8,07 9,07 10,07
Se você quiser pensar de maneira procedural você *poderia* (mas IMNSHO *não deve*) fazer:
for (i in 1:10) print(i + 0.07) [1] 1,07 [1] 2,07 [1] 3,07 [1] 4,07 [1] 5,07 [1] 6,07 [1] 7,07 [1] 8,07 [1] 9,07 [1] 10,07
Então vejamos: Seu teste if(x < 4) retorna o vetor
x < 4 [1] TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
Mas você está tentando resolver um teste encima de um objeto com dez elementos e faz um único teste. . . Veja que no seu caso seu depoimento "porem isso nao esta funcionando." não está correto de todo, pois o R lhe indica com clareza qual é o problema:
if(x < 4) {print ("a")} else {print ("b")} [1] "a" Mensagens de aviso perdidas: In if (1:10 < 4) {: a condição tem comprimento > 1 e somente o primeiro elemento será usado
Aliás, o seu código no exemplo acima do "if" tem erro de sintaxe, que talvez esteja mascarando a mensagem de erro:
if(x < 4) {print ("a")} else {"print ("b)} Erro: símbolo inesperado in "if(x < 4) {print ("a")} else {"print ("b"
Portanto, entenda que para um programador do R a forma mais clara no script é a natural da linguagem, como mostrou a Fátima. Como curiosidade, veja como mesmo o ifelse poderia ser removido, se você quisesse fazer algo mais "críptico" (que aí eu considero exagero no malabarismo do uso dos recursos da linguagem, mas vez por outra eu me deparo em código escrito até pelos mantenedores do corpo de pacotes do R):
c("a","b")[(x < 4) + 1] [1] "b" "b" "b" "a" "a" "a" "a" "a" "a" "a"
HTH -- Cesar Rabak 2015-08-23 23:27 GMT-03:00 Leonardo Monteiro <monteiroleonardo6@gmail.com>:
Prezados, eu sei que existem outras maneiras (funcoes, tipo ifelse) de se fazer isso, porem eu gostaria de fazer pelo if else , pq fica mais claro no meu script.
bom.. eu venho tentando aplicar a condicao em um vetor, por exemplo
x<- 1:10 if(x < 4) {print ("a")} else {"print ("b)}
porem isso nao esta funcionando.
Há algum outra maneira de aplicar a funcao if else para teste e/ou avaliacao dos dados de um vetor?
obrigado,
Leonardo.
_______________________________________________ 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.
participantes (3)
-
Cesar Rabak
-
Fátima Lima Paula
-
Leonardo Monteiro