<div dir="ltr">Leonardo,<div><br></div><div>Eu já toquei nesse assunto em resposta a outra questão parecida com essa sua, por isso serei mais breve.</div><div><br></div><div>A linguagem R é por excelência uma linguagem voltada para o tratamento de dados em grupos que <i>grosso modo</i> podemos denominar de "matriciais".</div><div><br></div><div>Por a maioria das "coisas" que se pode fazer em R são "automagicamente" feitas em vetores ou matrizes de dados.</div><div><br></div><div>Como um exemplo "bobinho" veja:</div><div><br></div><div>> 1:10 + 0.07</div><div>[1] 1,07 2,07 3,07 4,07 5,07 6,07 7,07 8,07 9,07 10,07<br></div><div><br></div><div>Se você quiser pensar de maneira procedural você <i>poderia</i> (mas IMNSHO <b>não deve</b>) fazer:</div><div><br></div><div><div>> for (i in 1:10) print(i + 0.07)</div><div>[1] 1,07</div><div>[1] 2,07</div><div>[1] 3,07</div><div>[1] 4,07</div><div>[1] 5,07</div><div>[1] 6,07</div><div>[1] 7,07</div><div>[1] 8,07</div><div>[1] 9,07</div><div>[1] 10,07</div><div><br></div></div><div>Então vejamos:</div><div><br></div><div>Seu teste <span style="font-size:12.8000001907349px">if(x < 4) retorna o vetor</span></div><div><span style="font-size:12.8000001907349px"><br></span></div><div><div>> x < 4</div><div> [1] TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE</div></div><div><br></div><div>Mas você está tentando resolver um teste encima de um objeto com dez elementos e faz um único teste. . .</div><div><br></div><div>Veja que no seu caso seu depoimento "<span style="font-size:12.8000001907349px">porem isso nao esta funcionando." não está correto de todo, pois o R lhe indica com clareza qual é o problema:</span></div><div><div><span style="font-size:12.8000001907349px">> if(x < 4) {print ("a")} else {print ("b")}</span></div><div><span style="font-size:12.8000001907349px">[1] "a"</span></div><div><span style="font-size:12.8000001907349px">Mensagens de aviso perdidas:</span></div><div><span style="font-size:12.8000001907349px">In if (1:10 < 4) {:</span></div><div><span style="font-size:12.8000001907349px"> a condição tem comprimento > 1 e somente o primeiro elemento será usado</span></div><div style="font-size:12.8000001907349px"><br></div></div><div style="font-size:12.8000001907349px">Aliás, o seu código no exemplo acima do "if" tem erro de sintaxe, que talvez esteja mascarando a mensagem de erro:</div><div style="font-size:12.8000001907349px"><br></div><div style=""><div style="font-size:12.8000001907349px">> if(x < 4) {print ("a")} else {"print ("b)}</div><div style="font-size:12.8000001907349px">Erro: símbolo inesperado in "if(x < 4) {print ("a")} else {"print ("b"</div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px">Portanto, entenda que para um programador do R a forma mais clara no script é a natural da linguagem, como mostrou a Fátima.</div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px">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):</div><div style="font-size:12.8000001907349px"><br></div><div style=""><div style=""><span style="font-size:12.8000001907349px">> c("a","b")[(x < 4) + 1]</span></div><div style=""><span style="font-size:12.8000001907349px"> [1] "b" "b" "b" "a" "a" "a" "a" "a" "a" "a"</span></div></div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px">HTH</div><div style="font-size:12.8000001907349px">--</div><div style="font-size:12.8000001907349px">Cesar Rabak</div><div style="font-size:12.8000001907349px"><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-08-23 23:27 GMT-03:00 Leonardo Monteiro <span dir="ltr"><<a href="mailto:monteiroleonardo6@gmail.com" target="_blank">monteiroleonardo6@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">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.<div><br></div><div><br></div><div>bom.. eu venho tentando aplicar a condicao em um vetor, por exemplo</div><div><br></div><div>x<- 1:10</div><div>if(x < 4) {print ("a")} else {"print ("b)}</div><div><br></div><div>porem isso nao esta funcionando.</div><div><br></div><div>Há algum outra maneira de aplicar a funcao if else para teste e/ou avaliacao dos dados de um vetor?</div><div><br></div><div><br></div><div>obrigado,</div><div><br></div><div>Leonardo.</div></div>
<br>_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" rel="noreferrer" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" rel="noreferrer" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br></blockquote></div><br></div>