Saya ingin belajar menggunakan Rcpp . Saya membaca dokumentasi di situs web paket CRAN, tetapi saya merasa mengerjakan contoh praktis (praktis kedua, mempertimbangkan convolve3) akan lebih membantu.
Saya mengusulkan kode berikut, dari paket robustbase karena tidak terlalu panjang atau terlalu pendek, menggunakan kombinasi tipe R dan fungsi R dan memiliki salah satu iterasi aritmatika kecil yang terlalu lambat dalam R. Bagaimana Anda menjalankan Rcpp itu?
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))
}
Tolong jelaskan sebanyak mungkin.
EDIT Ini benar-benar ide penjelasan langkah demi langkah tentang bagaimana Anda akan mengubah kode R yang ditulis dengan baik (dan didokumentasikan) (jadi setidaknya yayasan tidak apa-apa) menjadi implementasi yang efisien. Pilihan kode ini bisa dibilang agak acak tetapi saya pikir itu mencerminkan skrip khas lengkung pada cetak biru kami (memanggil fungsi R yang tidak ingin diterjemahkan, menggunakan loop aritmatika ....).
EDIT2 dari komentar saya menyadari ini sebenarnya bisa menjadi pekerjaan besar untuk dilakukan di C ++ (saya tidak menyadarinya saat memposting kode). Dalam hal ini, menggunakan potongan individual sebagai perangkat pedagogis ok. Saya akhirnya akan menguraikan potongan-potongan bersama dengan mengedit pertanyaan.