Rcppの使い方を学びたいのですが。私はパッケージのCRAN Webサイトのドキュメントを読みましたが、実用的な例(2番目の実用的な、convolve3を考慮したもの)に取り組むほうが役立つと思います。
次のコードは、長すぎたり短すぎたりせず、RタイプとR関数の組み合わせを使用し、Rで遅すぎるこれらの小さな算術反復の1つを使用しているため、robustbaseパッケージから提案します。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))
}
できるだけ詳しく説明してください。
編集これは、適切に記述された(および文書化された)Rコードを効率的な実装に変換する方法を段階的に説明するアイデアです。コードの選択は少しランダムですが、ブループリントの典型的なスクリプトを反映していると思います(翻訳したくないR関数を呼び出し、算術ループを使用しています...)。
コメントからのEDIT2私はこれが実際にはC ++で行うには大きな作業である可能性があることを認識しています(コードを投稿するときにそれを認識していませんでした)。これに関しては、個々の部分を教育的装置として使用することは問題ありません。質問を編集して、最終的にピースを一緒に解析します。