Dışa aktarılan ve aktarılamayan fonksiyonlar
[[Rcpp::export]] özel yorumuyla işaretlenen fonksiyonlar R konsolunda kullanılabilir hale gelir. Ancak genellikle her fonksiyonu R'a aktarmak istemezsin. Bunun yerine, bazı fonksiyonlar C++ içinde dahili tutulabilir. Bunlar çoğunlukla daha alt düzey hesaplama fonksiyonları veya yardımcı (utility) fonksiyonlardır.
2B uzaydaki bir noktadan orijine olan mesafeyi hesaplayan fonksiyonu hatırla:
double dist( double x, double y) {
return sqrt( x*x + y*y ) ;
}
Burada, (dışa aktarılan) dist fonksiyonunun, yalnızca bir double'ın karesini alan ve dışa aktarılmayan bir square fonksiyonunu çağıracak şekilde kodu güncelleyeceksin.
Bu egzersiz, kursun bir parçasıdır
Rcpp ile R Kodunu Optimize Etme
Egzersiz talimatları
square()tanımını, birdoublekabul edip birdoubledöndürecek şekilde tamamla, …- ve dönen değer
xçarpıxolsun. dist()tanımınısquare()kullanacak şekilde güncelle. Yani,x'in karesi iley'nin karesinin toplamının karekökünü döndürsün.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
#include
using namespace Rcpp;
// Make square() accept and return a double
___ square(___ x) {
// Return x times x
return ___ ;
}
// [[Rcpp::export]]
double dist(double x, double y) {
// Change this to use square()
return sqrt(___ + ___);
}