e pra quem quiser comecar a brincar com Rcpp....

library(Rcpp)
cppFunction(
    'NumericVector fr0(NumericVector x){
        int n=x.size();
        NumericVector r(n);
        for (int i=0; i<n; i++){
           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;
     }')
x=c(-5,-4,-3,-2,-1,0,1,2,3,4,5)
fr0(x)


Em 29 de setembro de 2014 22:13, walmes . <walmeszeviani@gmail.com> escreveu:
Por questões de desempenho é interessante que se evite aplicar a mestra instrução repetidas vezes, como por exemplo x>2. O resultado pode ser guardado e depois apenas consultado. Da mesma forma, se você tem o vetor lógico de x>2 basta invetê-lo para ter o de x<=2 uma vez que x>2 é igual à !(x<=2). Segue a adaptação que fiz do código do Jakson.

fr <- function(x){
    i <- x< -3
    j <- x> 2
    y <- 3*x
    y[i] <- 0
    y[j] <- 1
    y
}

fr(x)
curve(fr, -4, 6)

À disposição.
Walmes.

_______________________________________________
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.