ผมอยากจะเรียนรู้การใช้Rcpp ฉันอ่านเอกสารบนเว็บไซต์ CRAN ของแพ็คเกจ แต่ฉันรู้สึกว่าตัวอย่างที่ใช้งานได้จริง (การปฏิบัติที่สองโดยพิจารณา convolve3) จะเป็นประโยชน์มากกว่า
ฉันเสนอรหัสต่อไปนี้จากแพ็คเกจฐานที่แข็งแกร่งเพราะมันไม่ยาวเกินไปหรือสั้นเกินไปใช้การรวมกันของประเภท R และฟังก์ชั่น R และมีหนึ่งในการคำนวณเลขคณิตเล็ก ๆ เหล่านั้นที่ช้าเกินไปในอาร์คุณจะทำอย่างไรต่อ Rcpp - มัน
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 ++ (ฉันไม่ทราบเมื่อโพสต์โค้ด) ในเรื่องนี้การใช้แต่ละชิ้นเป็นอุปกรณ์การสอนก็โอเค ในที่สุดฉันจะแยกวิเคราะห์ชิ้นส่วนด้วยกันโดยการแก้ไขคำถาม