Je voudrais apprendre à utiliser Rcpp . J'ai parcouru les documents sur le site Web CRAN du package, mais je pense que travailler sur un exemple pratique (deuxième pratique, compte tenu de convolve3) serait plus utile.
Je propose le code suivant, du package robustbase car il n'est ni trop long ni trop court, utilise une combinaison de types R et de fonctions R et possède l'une de ces petites itérations arithmétiques qui sont trop lentes dans R. Comment feriez-vous pour Rcpp -le?
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))
}
Veuillez expliquer autant que possible.
EDIT C'est vraiment l'idée d'une explication étape par étape de la façon dont vous allez convertir un code R bien écrit (et documenté) (donc au moins les fondations sont correctes) en une implémentation efficace. Le choix du code est discutable un peu au hasard mais je pense qu'il reflète le script arch-typique sur nos plans (appelle les fonctions R que l'on ne veut pas traduire, utilise des boucles arithmétiques ....).
EDIT2 à partir des commentaires, je me rends compte que cela peut être un gros travail à faire en C ++ (je ne l'ai pas réalisé lors de la publication du code). À cet égard, l'utilisation de pièces individuelles comme dispositifs pédagogiques est acceptable. Je vais finalement analyser les morceaux ensemble en modifiant la question.