[R-br] Criar função no R com if e for

Jakson Alves de Aquino jalvesaq em gmail.com
Segunda Setembro 29 19:32:17 BRT 2014


2014-09-29 17:47 GMT-04:00 Rodolfo Souza <rodolfomssouza em gmail.com>:
> Olá pessoal, gostaria mais uma vez da ajuda de vocês.
>
> Eu estou precisando criar uma função no R que tem três condições e após
> testar todas as condições o programa me retorne um resultado na forma de
> vetor para cada valor (input) na função.
> Segue o código que consegui fazer até agora:
>
> x=c(-5,-4,-3,-2,-1,0,1,2,3,4,5);x
>
> fr=function(x){
>   r=numeric(length = length(x));
>   for(i in seq(along=x)){
>     if(x<-3){r[i]=0}

Tem dois erros na linha acima. Deveria ser x[i] e não simplesmente x.
E deveria ser "< -3" e não "<- 3".

>     else if(x>=-3 && x<=2){r[i]=3*x}

Deveria ser x[i], novamente.

Além disso, o uso do loop for no R é muito lento. Se for trabalhar com
muitos dados, é melhor escrever uma versão vetorizada da função:

fr <- function(x){
    y <- rep(1, length(x))
    y[x < -3] <- 0
    y[x >= -3 & x < 2] <- 3 * x[x >= -3 & x < 2]
    y
}

-- 
Jakson Aquino
http://www.lepem.ufc.br/aquino.php


Mais detalhes sobre a lista de discussão R-br