Me gustaría aprender a usar Rcpp. Fui a través de los documentos en el paquete del CRAN sitio web, pero estoy trabajando en un ejemplo práctico (segunda práctica, teniendo en cuenta convolve3) sería más útil .
Propongo el siguiente código, desde el robustbase paquete, ya que no es ni demasiado largo ni demasiado corto, utiliza una combinación de R tipos y funciones R y tiene uno de esos pequeños aritmética de iteraciones que son demasiado lentos en R. ¿Cómo usted va sobre la Rcpp-ing ?
scaleTau2<-function (x, c1 = 4.5, c2 = 3, consistency = TRUE, mu.too = FALSE){
n <- length(x)
medx <- median(x)
x. <- abs(x - medx)
sigma0 <- median(x.)
mu <- if (c1 > 0) {
x. <- x./(sigma0 * c1)
w <- 1 - x. * x.
w <- ((abs(w) + w)/2)^2
sum(x * w)/sum(w)
}
else medx
x <- (x - mu)/sigma0
rho <- x^2
rho[rho > c2^2] <- c2^2
if (!identical(consistency, FALSE)) {
Erho <- function(b) 2*((1-b^2)*pnorm(b)-b*dnorm(b)+b^2)-1
Es2 <- function(c2) Erho(c2*qnorm(3/4))
nEs2 <-ifelse(consistency == "finiteSample",n-2,n)*Es2(c2)
}
else nEs2 <- n
c(if (mu.too) mu, sigma0 * sqrt(sum(rho)/nEs2))
}
Por favor explique tanto como usted puede.
EDITAR Es realmente la idea de una explicación paso a paso de cómo se podría ir sobre la conversión de un bien escrito (y documentado) código R (así, al menos, las bases están bien) a una implementación eficiente. La elección del código se puede argumentar un poco al azar, pero creo que refleja el arco típico de la secuencia de comandos en nuestro planos (llamadas funciones R que uno no desea traducir, utiliza aritmética de bucles....).
EDIT2 de los comentarios me doy cuenta de que esto puede ser en realidad un gran trabajo que hacer en C++ (no me di cuenta que al publicar el código). En vista de esto, el uso de piezas individuales como el pedagógico de los dispositivos está bien. Que finalmente va a analizar las piezas a unir mediante la edición de la pregunta.