
Olha se é isso aí x=c(-5,-4,-3,-2,-1,0,1,2,3,4,5);x fr=function(x){ r=length(x) for(i in 1:r){ if(x[i]< -3){r[i]=0} else if(x[i]>=-3 && x[i]<=2){r[i]=3*x[i]} else{r[i]=1} } return(r) } rs=fr(x);rs On 29-09-2014 19:32, Jakson Alves de Aquino wrote:
2014-09-29 17:47 GMT-04:00 Rodolfo Souza <rodolfomssouza@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 }