Double vektörün toplamı
Döngüler genelde C++'ta R'den çok daha hızlı çalıştığı için döngü yazmak önemli bir beceridir. Hadi bir NumericVector'daki değerleri toplayan bir fonksiyonla başlayalım. Bu, Bölüm 2 Egzersiz 10'da ve bu bölümdeki önceki egzersizde öğrendiğin becerilerin üzerinden geçiyor.
Bu egzersiz, kursun bir parçasıdır
Rcpp ile R Kodunu Optimize Etme
Egzersiz talimatları
- Bir
NumericVector'ın elemanları üzerinde döngü kurup toplamını döndürensum_cppfonksiyonunun tanımını tamamla.n'ix'insize()değeri olarak ayarla.result'ı sıfıra başlat.fordöngüsü argümanlarını belirt.i'yi0olarak başlat, yineleme koşulunui'ninn'den küçük olması şeklinde ayarla ve her adımdai'yi bir artır.- Her yinelemede
x'in i. elemanınıresult'a ekle.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
#include
using namespace Rcpp;
// [[Rcpp::export]]
double sum_cpp(NumericVector x) {
// The size of x
int n = ___;
// Initialize the result
double result = ___;
// Complete the loop specification
for(int i = 0; ___; ___) {
// Add the next value
result = result + ___;
}
return result;
}
/*** R
set.seed(42)
x <- rnorm(1e6)
sum_cpp(x)
# Does the function give the same answer as R's sum() function?
all.equal(sum_cpp(x), sum(x))
*/