BaşlayınÜcretsiz başlayın

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

Kursa Göz Atın

Egzersiz talimatları

  • Bir NumericVector'ın elemanları üzerinde döngü kurup toplamını döndüren sum_cpp fonksiyonunun tanımını tamamla.
    • n'i x'in size() değeri olarak ayarla.
    • result'ı sıfıra başlat.
    • for döngüsü argümanlarını belirt. i'yi 0 olarak başlat, yineleme koşulunu i'nin n'den küçük olması şeklinde ayarla ve her adımda i'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))
*/
Kodu Düzenle ve Çalıştır