Dün geceden beri Rcpp
ve inline
deniyordum ve şu ana kadar gerçekten zevk alıyorum. Ama ben genel olarak C
için yeni ve henüz temel şeyler yapabilir ve işlevleri gibi şeyler hakkında çevrimiçi yardım bulmakta zorlanıyorum.Rcpp içinde minimum vektör bulun
Üzerinde çalıştığım bir şey, global ortamda bir vektörün en azını bulan bir işlevdi. Ben ile geldi:
library("inline")
library("Rcpp")
foo <- rnorm(100)
bar <- cxxfunction(signature(),
'
Environment e = Environment::global_env();
NumericVector foo = e["foo"];
int min;
for (int i = 0; i < foo.size(); i++)
{
if (foo[i] < foo[min]) min = i;
}
return wrap(min+1);
', plugin = "Rcpp")
bar()
Ama bunu yapmak için daha kolay bir yolu olmalı gibi görünüyor ve bu which.max()
system.time(replicate(100000,bar()))
user system elapsed
0.27 0.00 0.26
system.time(replicate(100000,which.min(foo)))
user system elapsed
0.2 0.0 0.2
Ben temel c++
veya Rcpp
fonksiyonunu bakan muyum göre oldukça yavaş olduğunu bunu yapar? Ve eğer öyleyse, bu tür işlevlerin bir listesini nerede bulabilirim? Ben kullanılabilecek olan temel c++
kodunu öğrenmek için ama daha nasıl ve nerede, R
içinde c++
dahil etmek nasıl gerçekten ilgilenmiyorum ki Where can I learn how to write C code to speed up slow R functions?
ancak farklı:
Bu soru ile ilgilidir tahmin R
.
C++ kullanarak min ve max gibi işlemleri hızlandıracağınızdan şüpheliyim - bunlar muhtemelen R. Plus'ta zaten (hızlı) SSE komutları kullanılarak uygulanmaktadır, C++'dan R'ye geçiş ve tersi de ücretsizdir. –
Bunun daha kavramsal olduğu ve bunun çok daha büyük bir C++ fonksiyonunun bir parçası olduğunu anlıyorum. –