ÎncepețiÎncepe gratuit

Suma unui vector de tip double

Deoarece buclele rulează de obicei mult mai rapid în C++ decât în R, scrierea lor este o abilitate importantă. Să începem cu o funcție care calculează suma valorilor dintr-un NumericVector. Acesta reia conceptele învățate în Capitolul 2, Exercițiul 10, și în exercițiul anterior din acest capitol.

Acest exercițiu face parte din cursul

Optimizarea codului R cu Rcpp

Vezi cursul

Instrucțiuni pentru exercițiu

  • Completează definiția funcției sum_cpp, care parcurge elementele unui NumericVector și returnează suma lor.
    • Setează n ca valoarea returnată de size() aplicată pe x.
    • Inițializează result cu zero.
    • Specifică argumentele buclei for: inițializează i la 0, setează condiția de iterare ca i mai mic decât n și incrementează i cu unu la fiecare pas.
    • La fiecare iterație, adaugă al i-lea element al lui x la result.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

#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))
*/
Editează și rulează codul