Comece agoraComece grátis

Soma de vetor double

Como loops geralmente executam muito mais rápido em C++ do que em R, escrever loops é uma habilidade importante. Vamos começar com uma função que soma os valores de um NumericVector. Isso retoma as habilidades que você aprendeu no Exercício 10 do Capítulo 2 e no exercício anterior deste capítulo.

Este exercicio faz parte do curso

Otimizando código R com Rcpp

Ver curso

Instruções do exercicio

  • Complete a definição de uma função, sum_cpp, que percorre os elementos de um NumericVector e retorna sua soma.
    • Defina n como o size() de x.
    • Inicialize result em zero.
    • Especifique os argumentos do loop for. Inicialize i como 0, defina a condição de iteração como i menor que n e incremente i de um em um a cada passo.
    • Em cada iteração, some o elemento i-ésimo de x a result.

exercicio interativo prático

Tente este exercicio completando este código de exemplo.

#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))
*/
Editar e Executar Código